静态构造函数用来初始化任何的静态数据,或者是用来执行只需执行一次的特殊行为。在第一个实例被创建前或者是任何的静态成员被引用时,静态构造函数会被自动调用。
静态构造函数有有以下属性:
- 静态构造函数不能有访问权限修饰符(public,private,….),也不能有参数
- 静态构造函数在第一个实例被创建之前或者是任何的静态成员被引用的时候,会被自动调用
- 静态构造函数不能被直接的调用
- 用户无法控制静态构造函数什么时候会被调用
- 静态构造函数的一个典型用法是当一个类正在使用日志文件时,构造函数用于创建文件的写入口
- 当为非托管代码创建封装类的时候,静态构造函数也非常的有用,例如静态构造函数可以调用LoadLibrary方法
如果静态构造函数抛出异常,运行时就不会再次触发构造函数了
public sealed class MyTest { static int a = 10; public MyTest() { Console.WriteLine("This is public MyTest Constructor"); } static MyTest() { Console.WriteLine("MyTest static Constructor "); } public static void MyTestMethod() { Console.WriteLine("This is MyTestMethod"); } } static void Main(string[] args) { // Output: // MyTest static Constructor // This is public MyTest Constructor MyTest myTest = new MyTest(); Console.ReadKey(); } static void Main(string[] args) { // Output: // MyTest static Constructor // This is MyTestMethod MyTest.MyTestMethod(); Console.ReadKey(); }