【IT168技术文档】
前两天看到一道题~~
这个的输出结果是多少呢~~~class Program { static void Main(string[] args) { Caculator ca = new Caculator(); Caculator ca1 = new Caculator(); Console.WriteLine("Current object count is : " + Caculator.InstanceCount.ToString()); Console.ReadLine(); } } public class Caculator { public static int InstanceCount; static Caculator() { InstanceCount++; } public Caculator() { InstanceCount++; } }
应该是3,Why~~~? 要理解这个问题首先要知道静态函数何时被调用~~, 在.Net中这个函数是第一次调用静态成员,执行实例化时发生. 而这个static的构造方法是不能被直接调用的, 因此在执行实例化操作时调用的还是这个public 的构造方法. 这个题稍微改一下就又不一样了`~
比如在 static Caculator() 方法前加一个public, 刚才讲过了,这个static的构造方法不能被直接调用, 因此加上这个public的修饰符是非法的,编译不能通过. 同时,这个方法也不能含有参数(还是因为不能手动调用), 否则也是非法的.
那么这个静态构造函数有什么用处呢~~ 比如可以用它来做日志类的初始化器~~应用程序可以利用它写入日志.
也可以用作非托管资源的包装类, 在这里可以调用LoadLibrary方法以选择需要加载的版本