class Class1{public static int Count = 0;static Class1(){Count++;}public Class1(){Count++;}}Class1 o1 = new Class1();Class1 o2 = new Class1();请问,Class1.Count的值是多少?( )1. 12. 23. 34. 4 答案是3,谁解释一下为什么?

解决方案 »

  1.   

    静态构造函数是C#的新特性用处并不广用于初始化静态变量
    静态构造函数是属于类的,而不属于任何一个实例,所以这个构造函数只会被执行一次,而且是在创建此类的第一个实例或引用任何静态成员之前,由.NET自动调用
    然后创建两个对象时分别++
    就得到三了!
    大概是这道理,不知道对不对!
      

  2.   

    Class1 o1 = new Class1();
    Class1 o2 = new Class1();
    调用public Class1()两次,Count =2;
    Class1.Count时引用static Class1(),所以Count =3;
      

  3.   

    态构造函数只执行一次
    Class1 o1 = new Class1(); 
    Class1 o2 = new Class1(); 
    然后创建两个对象时分别++ 
    调用public Class1()两次,Count =2; 
    Class1.Count时引用static Class1(),所以Count =3; 
      

  4.   

    创建两个实例后为2,
    调用Class1.Count ()时,
    会调用Class1中静态构造,
    所以这是为3。
      

  5.   

    static构造函数 +1
    new 构造两次 +2= 3
      

  6.   

    感觉楼上的某些说法是错误:
    在第一次构造的时候,静态变量要先被初始化,所以静态构造函数要被先调用一次,然后是正常的构造函数被调用一次,所以在执行Class1 o1 = new Class1(); 后count已经是2了,
    然后在执行Class1 o2 = new Class1(); 后count就会变为3。第二次静态构造函数是不会被调用的。至于楼上所说的什么调用Class1.Count时会变为3简直是笑话。但到我调用Class1.Count一万次就要变成一万吗?