十七:静态类
静态类就是不需要进行实例化的类,定义类时用static修饰,例如Console,Math,Environment等,静态类只能有静态成员。注意,结构(值类型)不能用static来修饰,因为CLR要求值类型是必须实例化的。
静态类有以下特征:
(1)必须直接从基类System.Object派生,因为从其它基类派生的类由于继承性仅适用于对象而没有任何意义,而且不能创建静态类的实例
(2)不能实现任何接口,因为只有使用类的实例才能去调用类的接口方法,而静态类不能被实例化
(3)静态类只能定义静态成员(字段、方法、属性、事件)
(4)静态类不能被用作字段、方法参数或局部变量,因为这些用法都将表明变量引用了实例
以下是一个定义的静态类:
using System;
public static class AStaticClass
{
public static void AStaticMethod(){}
private static String s_AStaticField;
public static String AStaticProperty
{
get { return s_AStaticField; }
set { s_AStaticField = value; }
}
public static event EventHandler AStaticEvent;
}
查看生成的IL代码,注意到C#编译器将该类标记为abstract和sealed,而且没有相应的实例构造器,即IL中没有.ctor的方法。