我们之前讲C#有好多种类的方法 ,构造方法,抽象方法等等,但是如果我们认真观察会发现,所有的方法,都分为静态方法和非静态方法.
就像我们的身份证一样,你可以是男性,也可以是女性.但是为什么有那么多种类呢,这个就像我们的职业一样,你可以是程序猿,也可以是外卖小哥.
所以方法从这个角度来看,只分为静态方法和非静态方法(实例方法)
特性
既然方法分为两类,那就证明静态方法和普通的非静态方法会有很多不一样的地方
- 首先静态方法要加static修饰符,加了就是静态方法,不加就不是(没有这个北京户口,你就不是北京人)
- static定义的空间里面只能包含static的东西,静态类里面不能有普通的成员属性,也不能有普通的方法
- 所以静态方法也只能包含静态的成员属性,如果要用静态函数调用别的函数,如果被调用的函数不是静态的,你就要实例化它的类了(不是人家圈子里的人,就不要硬挤)
- 但是普通函数要调用静态方法很方便,不需要实例化,直接用类名就可以调用
你可以理解成我们普通家庭要去高消费的地方,抄了家底才能去,但是土豪去我们常去的路边摊也好,去五星级酒店都没什么感觉
- 静态方法虽然很方便,但是同样开销就大了,它会占用内存,而且不会自动销毁,所以我们要尽量少生成静态方法(就和二八原则一样,有20%的富人就行了)
- 静态方法属于类本身,当你把这个类实例化了出来,但是静态方法并不属于实例化的个体(这个是公有财产,大家都可以用类去调用它,但是它是集体的,不属于任何个人)
案例
public class A{
//这个是A的静态方法
public static void TestStatic(){}
//这个是A的普通方法
public void Test(){}
}
public class B{
public void Start(){
A.TestStatic();//调用静态方法
A a = new A();
a.Test();//调用非静态方法
}
}
适用场景
静态方法是可以全局调用的,但是又占用内存,所以要合理的规划静态方法的使用
- 工具类(用一个工具类,把我们需要经常用到的通用方法写成静态的)
- 系统配置信息
- 系统设置
- 扩展方法
静态方法非常适合放在我们整个项目都要用到的通用方法,通用配置的地方
掰掰啦!