c#关于静态类和静态函数的一些用法

一、静态类 

静态类与非静态类的重要区别在于静态类不能实例化。它仅包含静态成员,不能使用 new 关键字创建静态类的实例。

主要特性:

1,仅包含静态成员。

2,无法实例化。

3,是密封的。

4,不能包含实例构造函数。

public static class FB
{
    public static void aaa { return; }
    public static void bbb { return; }
}

二、静态成员

静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量,他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问。

实例成员:实例成员变量是和对象相关联的,访问实例成员变量依赖于实例的存在。

区别

(1)语法区别:静态成员有关键字static,非静态成员无static修饰;

(2)存储区别:  静态成员变量存储位于程序的全局变量存储区,其作用域限制为类内部,并且在整个程序运行期间只在内存中拥有一个存储位置,不会拷贝不会复制,只是一个;

                      非静态成员变量存储位于对象的变量存储区,多个对象拥有多个变量的存储,只隶属于自己的的对象

(3)归属区别:静态成员隶属于类,是类的财产,无论对一个类创建多少个实例,它的静态成员都只有一个副本,在各个地方的改变都会改变其值;

                     非静态成员隶属于它的对象,各自对象同一个非静态成员值的改变都不互相影响,有多少实例就有多少副本;

(4)生存周期区别: 知道了存储位置的区别也就不难理解生存周期的差异了,静态成员只要分配了空间则在整个程序运行期间,它都是存在的,只有程序关闭之后,它的内存才会被GC回收器收回,不过作用域仍然只限制于类的内部,在类外部调用时需要使用类                                      名加点的方式访问;

                           类的非静态成员的生存周期跟随于隶属于对象的生存周期,对象消亡则非静态成员就会被回收;

(5)初始化顺序的区别:初始化都是最先初始化类的静态成员,然后才是非静态数据成员。

 

你可能感兴趣的:(C#)