C#静态构造器的作用
就是初始化静态成员
比如有几个静态成员需要初始化
那你把初始化代码放到哪呢?
放到普通构造函数里,那肯定不行。因为静态成员没有创建实例就要可用。
专门建一个static public方法来初始化?这样用起来非常不方便,你需要在“第一次”使用静态成员前先调用这个方法。
如果你在使用静态成员前忘了调用该方法,会导致错误。
如果重复调用,又是冗繁操作。
所以静态构造函数就派上用场了。
它会在你第一次调用静态成员(或创建实例)的时候自动被调用
以上解释引自:http://zhidao.baidu.com/question/112464220.html
下面是MSDN对静态构造函数特点的描述:
1.静态构造函数既没有访问修饰符,也没有参数
2.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类
3.无法直接调用静态构造函数
4.在程序中,用户无法控制何时执行静态构造函数
下面看一段代码:
/// <summary> /// 数据抽象类 /// </summary> public abstract class DataProvider { #region "DataProvider Instance" private static DataProvider _defaultInstance = null; static DataProvider() { DataProvider dataProvider; if (Common.GetDBType == "MsSql") dataProvider = new SqlDataProvider(); else if (Common.GetDBType == "Access") dataProvider = new AccessDataProvider(); else if (Common.GetDBType == "Oracle") dataProvider = new OracleDataProvider(); else throw new ApplicationException("数据库配置不对!"); _defaultInstance = dataProvider; } /// <summary> /// 数据访问抽象层实例 /// </summary> /// <returns></returns> public static DataProvider Instance() { return _defaultInstance; } }
上面是一个静态构造方法的实际用例,代码中,因为不知道要使用的是什么类型的数据库,所以DataProvider的对象只是先声明,而没有进行初始化,它的初始化工作就在静态的构造方法中完成。