静态成员
静态字段:使用static关键字定义静态字段,如果不对静态字段进行初始化,静态字段将字段获得默认值(0、null、false)。
静态字段从属于类本身,而不是实例。从类的外部访问时,需要使用类名。在类自身内部的代码总,可以省略类名。
C#不能在同一个类中定义同名的静态字段和实例字段。重复的名称在声明空间中会造成冲突。
静态方法:
this关键字在静态方法中是无效的。
静态构造器: 对类(不是类实例)进行初始化。“运行时”会在首次访问类是自动调用静态构造器。
在静态构造器中进行的赋值优先于声明字段时进行的赋值,即结果是静态构造器中的值。
在声明的同时完成静态初始化,性能比使用静态构造器高,尽量用前者,因为后者会自动插入一些负责检查的代码。
示例代码:
class Program { static void Main() { Console.WriteLine(Employee.NextId); //100 Console.ReadKey(); } } class Employee { static Employee() { NextId = 100; } public static int NextId =42; }
静态属性: 使用静态属性几乎肯定要比使用公共静态字段好,因为公共静态字段在任何地方都能调用,而静态属性则至少提供了一定程度的封装。
示例代码:
class Employee { public static int NextId { get { return _NextId; } private set { _NextId = value; } } public static int _NextId =42; }
静态类:
这个类不包含任何实例字段(或方法)。静态类的作用:1. 防止程序员写代码来实例化这个类;2.防止在类的内部声明任何实例字段或方法。 3. 这个类是不可扩展的,C#编译器会在CIL代码中把它标记为abstract 和 sealed。