静态构造函数:
C#的一个新特征是也能够给类编写无參数的静态构造函数。
编写静态构造函数的一个原因是,类有一些静态字段或属性,须要在第一次使用类之前。从外部源中初始化这些静态的字段和属性。
.NET运行库没有确保什么时候运行静态构造函数。所以不能把要求在某个特定时刻运行的代码放在静态构造函数中。也不能估计不同类的静态构造函数依照什么顺序运行。
可是能够确保静态构造函数至多运行一次,即在代码引用类之前调用它。
静态构造函数没有訪问修饰符,其它C#代码从来不调用它,但在载入类时,总是由.NET运行库调用它,所以像public或private这种訪问修饰符就没有不论什么意义。
出于同样的原因。静态构造函数不能带不论什么參数,一个类仅仅能有一个静态构造函数。非常显然。静态构造函数仅仅能訪问类的静态成员。不能訪问类的实例成员。
注意。无參数的实例构造函数与静态构造函数能够在一个类中同一时候定义。
虽然參数列表同样,但这并不矛盾。由于在载入类时运行静态构造函数,而在创建实例使运行实例构造函数,所以何时运行哪个构造函数并不冲突。
class BaseClass
{
private static int count;
static BaseClass()
{
count = 0;
console.writeline("aaa");
}
}
静态字段:
使用static修饰 属于类,不属于某个实例。
与实例字段一样。能够在声明的同一时候进行初始化。
与实例字段不同,假设没有对静态字段进行初始化,静态字段将自己主动获取默认值(0。null,false等)。
所以,一个静态字段即使没有被显示地赋值,也能够被訪问。
訪问须要使用 类名.静态字段名,不能使用 对象名.静态字段名
静态方法:
使用static修饰。直接使用 类名.方法名
静态方法的函数体内不能直接使用非静态成员,也没有this.
静态类:
假设类仅仅包括静态的方法和属性。该类就是静态类。静态类在功能上与使用私有静态构造函数创建的类同样。不能创建静态类的实例。
静态类是不能实例化的。我们直接使用它的属性与方法,静态类最大的特点就是共享。
public static class StaticTestClass
{
public static int n = 0;
public static void Add()
{
n++;
}
}