关键字:static
在类中可以定义为静态的成员有:字段,方法,属性,运算符,事件,构造函数等,不可以是索引器,析构函数。
静态成员与非静态成员/实例成员区别:
1、
静态成员属于类所有,为各个类的实例所公用。
非静态成员属于类的实例所有。
2、
静态成员可以直接使用,不必创建对象,语法格式:类名.静态成员;
调用非静态成员,要先实例化类。
3、静态方法与非静态方法
静态方法只能访问类中的静态成员;
非静态方法可以访问类中的任何成员
4、
静态成员变量存储位于程序的全局变量存储区,其作用域限制为类内部,并且在整个程序运行期间只在内存中拥有一个存储位置,不会拷贝不会复制,只是一个;
非静态成员变量存储位于对象的变量存储区,多个对象拥有多个变量的存储,只隶属于自己的的对象。
5、
静态成员只要分配了空间则在整个程序运行期间,它都是存在的,只有程序关闭之后,它的内存才会被GC回收器收回;
类的非静态成员的生存周期跟随于隶属于对象的生存周期,对象消亡则非静态成员就会被回收。
静态类与非静态类区别:
1、
静态类仅包含静态成员。
2、
静态类不能使用 new 关键字创建静态类的实例。
3、
静态类不能包含实例构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。
4、
静态类是密封的,因此不可被继承。
5、
静态类不能使用abstract或sealed修饰符。
6、
静态类不能指定任何接口实现。
7、
静态类的成员不能有protected或protected internal访问保护修饰符。