随笔 - 49  文章 - 0 评论 - 205 trackbacks - 6
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

严正声明 : 本站文章转载请注明出处.

与我联系

搜索

 

留言簿(11)

我的标签

随笔分类

随笔档案

Atlas相关

积分与排名

  • 积分 - 55464
  • 排名 - 766

阅读排行榜

前两天看到一道题~~
    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 沙加 阅读(238) 评论(2)  编辑 收藏 所属分类: .Net开发技巧系列

FeedBack:
#1楼  2008-05-06 12:20 迷宫 [未注册用户]
没搞清楚有什么用,怎么用
  回复  引用    
#2楼  2008-05-06 12:41 Sapphire [未注册用户]
好理解,就象静态方法是类级的方法一样,静态构造函数是对类级别需要进行初始化的动作进行初试话的地方.
因为类级别的东西被初始化以后,就永远存在(程序关掉当然就没了)..所以初始化也只需要一次.也就是静态构造函数要么不执行,要么只会执行1次,不会有第2次(前提:同一应用程序域下)
  回复  引用    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: