静态构造函数的理解

前两天看到一道题~~
    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方法以选择需要加载的版本.

 

posted on 2008-05-06 11:30  沙加  阅读(637)  评论(3编辑  收藏  举报

导航