.NET中静态的知识

1,C#中没有全局变量的概念,这意味着所有的成员变量只有该类的实例(new 出来的对象)才能操作这些数据。
   所以出现了静态变量的概念,保存类的公共信息,所有该类的实例共享该值。有时要对这些静态变量从外部源中进行初始化,所以就有了静态构造函数。
   静态变量也有修饰符:public,protected,private和internal。
   静态方法与静态变量一样,不属于任何特定的实例,属于类全体成员共有,用类名来调用" 静态方法只能访问类的静态成员,不能访问类的非静态成员,因为静态方法是通过类来调用的,而这时候有可能类没有实例化;
   非静态方法可以访问类的静态成员,也可以访问非静态成员。" 
这句话意识是:在一个类中,要是有静态方法,静态方法中使用的字段要是静态的字段
在非静态方法中,可以调用静态字段,也可以调用非静态字段
  静态变量在声明开始,就一直存储在内存中,直到整个程序终止。
  而实例成员在创建对象时分配内存。 new的时候
静态变量的生存周期为应用程序和存在周期;
2,静态构造函数是C#的一个新特性,在编程过程中用处并不广,它的主要目的是用于初始化一些静态变量。
   因为静态构造函数是属于类的,而不属于任何一个实例,所以静态构造函数只会被执行一次,而且是在创建此类的第一个实例或引用任何静态成员之前,由.NET自动调用的。确切的说,静态构造函数是在加载类时执行的。
   因为静态构造函数是.NET调用的,所以修饰符就没有意义了,也不能有参数,也就是说一个类中只能有一个静态构造函数。可以说静态构造函数是私有的。
   在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类。也就是说我们无法直接调用静态构造函数,也不可能知道静态构造函数何时会被调用。
   无参数的构造函数可以与静态构造函数共存,因为一个属于类,一个属于实例。静态构造函数是在加载类时执行的,而实例构造函数是在创建实例时执行的。
   静态构造函数最多只运行一次。
   静态构造函数不可以被继承。
   如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。
   如果类中包含用来开始执行的Main方法,则该类的静态构造函数将在调用Main方法之前执行。静态构造函数是在加载类时执行的。
   如果类中的静态字段带有初始化,则静态字段的初始化语句将在静态构造函数之前运行。
4Main()函数是程序的入口,要确保首先执行,所以要定义成为静态的5,类中的静态变量是在一开始就分配内存并初始化好的,而类中的非静态变量是在创建实例时分配内存并初始化的
静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数
静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。
当类中没有依赖对象标识的数据或行为时,就可以使用静态类
1、效率,直接加载到内存
2、静态类是什么?基类是什么,访问修饰符相当什么
3、静态类为什么保存在内存中的栈中?
4、节省内存,程序域共享
所以为什么要使用静态类主要原因为:
1、执行效率
2、节省内存
3、程序域共享

A:不需要实例化类,就可以直接调用
B:生命周期不一样,不加static的话,要等到类实例话才运行。

原文链接

猜你喜欢

转载自www.cnblogs.com/ZkbFighting/p/12916535.html