C#-类:静态成员的介绍
一:静态成员的介绍
关键字:static
修饰的 成员变量、方法、属性等,直接用类名点出使用。→ 全局性
1.1 为什么可以直接点出来使用
程序不可无中生有。所有对象、变量、函数均需分配内存空间
实例化对象即为,分配内存空间,在程序中产生一个抽象的对象
静态数据只能通过类访问,自然也不会有实例化
而程序开始运行时,就会为静态成员分配内存空间。所以我们就能直接使用。只要使用了它,直到程序结束时内存空间才会被释放。如此使静态成员具有唯一性
如果声明的静态成员过多,就会导致可动态支配的空间变少,GC的次数就会变多,游戏卡顿,内存崩溃等情况
静态函数中不能使用非静态成员 非静态函数可以使用静态成员
1.2 静态成员的作用
-
常用唯一变量的申明
-
方便别人获取的对象申明
-
静态方法:常用的唯一的方法申明 比如 相同规则的数学计算相关函数
1.3 常量和静态变量的区别
const(常量)可以理解为特殊的static(静态),都可以通过类名点出来使用
同:通过类名点出使用
异:
-
const必须初始化,不能修改。static没有这个规则
-
const只能修饰变量。static可以修饰很多
-
const一定是写在访问修饰符后面的 ,static没有这个要求
二:静态成员的应用:单例模式
一个类,在整个程序的生命周期中,有且仅有一个该类对象存在
不能在外部实例化,直接通过该类类名就能得到唯一的对象
//简单的单例模式
class Test{private static Test test = new Test(); //在内部进行初始化public static Test testInstance{ //使用属性包裹:外部不能修改,避免在外部对类对象置空get{ return test; }}private Test(){} //外部不能初始化public int age = 1;
}
//在内部进行初始化,在外部不能修改只能得到,由此可使程序内有且仅有一个该类对象存在
----------
//调用
Console.WriteLine(Test.testInstance.age);