class class1
    {
        private static int count = 0;
        static class1()
        {
            count++;
        }
        public class1()
        {
            count++;
        }
    }
    class1 o1=new class1();
    class1 o2=new class1();
    则o1.count的值是多少 ( ).   A)值为0     B)值为1   C)值为2   D)值为3            该选什么???郁闷  私有的又怎么能被new的点出来了?  上面的是全题了 没抄错!
               忘高手帮忙解答 谢谢!

解决方案 »

  1.   

    class1 o1=new class1();
    class1 o2=new class1();
    则o1.count  编译不通过。
      

  2.   

    class1 o1=new class1();
    执行是
    1.静态构造函数
    2.公共构造函数
    所以count应该为2class1 o2=new class1();
    因为静态构造函数只执行一次,
    所以只执行公共构造函数,count应该为3,count是静态变量,所以是累加的!!
      

  3.   

    private static int count = 0;
    私有,且静态成员
      

  4.   

    1.o1.count 点不出来的. 这个题只是在问count的值.
    另外,题目问得有些不正确(或者说出题者故意弄陷阱),应该问class1.count 值是多少. 因为.count不是仅仅属于o1这个class1实例化后对象的.
    static class1也是一样,静态构造函数,属于class1类的,在类被实例化的时候会被调用一次.(仅一次)2.选D) 3因为第一点提及的.count并不是单单属于某个对象的,而是属于class1的,static 修饰的构造函数亦是.多个class1的实例共用一个static构造函数,该静态构造函数仅会在该类第一次实例化的时候调用一次.所以是选D) 3static count = 0 --> 
    static class1 count++ (1) --> 
    class1 o1=new class1(); count++ (2) -->
    class1 o2=new class1(); count++ (3)
      

  5.   

    namespace Test
    {
        class class1
        {
            private static int count = 0;
            static class1()
            {
                count++;
            }
            public class1()
            {
                count++;
            }
        }    class Program
        {
            static void Main(string[] args)
            {
                class1 o1 = new class1();
                class1 o2 = new class1();            int i = o1.count;            Console.ReadKey();
            }
        }   
    }编译试试看!
      

  6.   

    想执行o1.count是办不到的,因为是私有的
    你可以改成public,调用class1.count因为静态的!
      

  7.   

    我们改动程序来验证答案!!
    但count作为初值,设置为私有及静态,通过方法返回,在编称中经常是用到的!
      

  8.   

    这边就是考静态初始化函数
    private 只是打错了