静态成员:标识为static的字段,方法,属性,构造函数,事件,就是静态成员
class Dog { static int Num; }
静态成员将被类的所有实例共享(即公共财产),所有实例都访问同一内存位置。
静态成员将直接通过类名访问,不需要实例化。(它们仅和整个类有关)。
静态成员和实例成员分开保存。
静态成员的生存期:独立于任何实例,没有实例也可以访问。其初始化语句在任何静态成员使用之前调用。
例如:系统方法内的字段均使用静态成员。不需要实例化,直接调用。
静态函数:
1)静态函数也独立于任何实例,没有实例也可以调用。
2)静态函数不能访问实例成员,仅能访问其他静态成员。
静态构造函数:
1)静态构造函数用于初始化静态字段。(为静态成员而生)
2)在引用任何静态成员之前,和创建任何实例之前调用
3)与类同名,使用static,无参数,无访问修饰符
静态类:
1、如果类只包含了静态的方法和属性,并且标识为static;
2、静态类不能创建实例,不能被继承;;
3、可以为静态类定义一个静态构造函数。
静态类主要用于基础类库(如数学库(Math类))和扩展方法。
如何扩展方法:
1、如果有源代码,直接添加一个新方法
2、如果不能修改但是也不是密闭类,可以派生子类扩展
3、如果以上条件都不满足,可以使用静态类扩展方法
扩展要求:
扩展方法所属的类,必须是static类
扩展方法本身必须是static方法
扩展方法的第一个参数类型,必须是this+要扩展的类名
//对Cat类 进行扩展 static class aaa { static public void ab(this Cat cat) { Console.WriteLine("13:"); } } //调用 Cat b = new Cat("66"); b.ab();