class Demo
    {
        public static int count = 0;
        static Demo()
        {
            count++;
        }        public Demo()
        {
            count++;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Demo d1 = new Demo();
            Demo d2 = new Demo();
            Console.WriteLine(Demo.count);  //结果为什么是3,不是2
        }
    }
想知道,Demo类里面static Demo()方法是什么意思
为什么输出结果是3,而不是2。

解决方案 »

  1.   

    静态构造函数,只执行一次Demo d1 = new Demo();
    先调用static Demo再调用public Demo()
    Demo d2 = new Demo();
    只调用 public Demo()
    所以是3
      

  2.   

    单例模式 只执行一遍 是最先执行的
    具体解说上网上搜一下单例模式就可以了。
    上述代码执行步骤
    1、static Demo()
    2、Demo d1 =new Demo();
    3、Demo d2 =new Demo();
    所以结果是3.
      

  3.   


    class Demo
        {
            public static int count = 0;  
            static Demo()
            {
                count++;
            }        public Demo()
            {
                count++;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Demo d1 = new Demo();  
              Console.WriteLine(Demo.count);   //所以此时输出 2 ,因为执行了 static Demo()和public Demo() 
                Demo d2 = new Demo(); 
                Console.WriteLine(Demo.count);  //所以此时输出3 ,因为执行了 public Demo() 
            }
        }
      

  4.   

    准确说这里和单例模式没多少关系。
    只不过单例模式需要通过静态成员来实现
    这道题需要理解了static 这个关键字
      

  5.   

    运行了一遍,就知道count 怎么累加的了,仍然不知道的是为什么是这样的执行顺序。关注中……
      

  6.   

               Demo d1 = new Demo(); 此时静态函数执行一次 +1 ,实例时执行一次 +1 此时为2
                Demo d2 = new Demo(); 静态值为2   实例执行一次 +1  结果3
      

  7.   

    静态构造函数,只执行一次Demo d1 = new Demo();
    先调用static Demo再调用public Demo()
    Demo d2 = new Demo();
    只调用 public Demo()
      

  8.   

    1、static Demo()
    2、Demo d1 =new Demo();
    3、Demo d2 =new Demo();
      

  9.   

    Demo d1 = new Demo();  
    Console.WriteLine(Demo.count);   //此时输出 2 ,因为执行了 static Demo()和public Demo() 
    Demo d2 = new Demo(); 
    Console.WriteLine(Demo.count);  //此时输出3 ,因为执行了 public Demo() 
      

  10.   

    就是初始化静态成员比如有几个静态成员需要初始化
    那你把初始化代码放到哪呢?放到普通构造函数里,那肯定不行。因为静态成员没有创建实例就要可用。专门建一个static public方法来初始化?这样用起来非常不方便,你需要在“第一次”使用静态成员前先调用这个方法。
    如果你在使用静态成员前忘了调用该方法,会导致错误。
    如果重复调用,又是冗繁操作。所以静态构造函数就派上用场了。
    它会在你第一次调用静态成员(或创建实例)的时候自动被调用