MethodA 的公共方法,则按下面的示例所示调用该方法:
UtilityClass.MethodA();
就是说,通过指定类名称和方法名称来应用类成员,如下示例所述。
double dub = -3.14; Console.WriteLine(Math.Abs(dub)); Console.WriteLine(Math.Floor(dub)); Console.WriteLine(Math.Round(Math.Abs(dub))); // Output: // 3.14 // -4 // 3
静态构造函数仅调用一次,在程序驻留的应用程序域的生存期内,静态类一直保留在内存中。
下表介绍静态类的主要特性:
-
仅包含静态成员。
-
无法实例化。
-
是密封的。
-
实例构造函数。
编译器将保证不会创建此类的实例。
静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量(除非在方法参数中显式传递)。
静态字段有两个常见的用法:一是记录已实例化对象的个数,二是存储必须在所有实例之间共享的值。
静态方法可以被重载但不能被重写,因为它们属于类,不属于类的任何实例。
不需要对象实例。
C# 不支持静态局部变量(在方法范围内声明的变量)。
通过在成员的返回类型之前使用 static 关键字可以声明静态类成员,如下面的示例所示:
public class Automobile
{
public static int NumberOfWheels = 4;
public static int SizeOfGasTank
{
get
{
return 15;
}
}
public static void Drive() { }
public static event EventType RunOutOfGas;
// Other non-static fields and properties...
}
若要访问静态类成员,应使用类名而不是变量名来指定该成员的位置,如下面的示例所示:
Automobile.Drive(); int i = Automobile.NumberOfWheels;
如果类包含静态字段,请提供在加载类时初始化这些字段的静态构造函数。
但是,两者之间的性能差异在大多数时候并不明显。