static class Program
    {
        static void Main()
        {
            Dog[] dogs = new Dog[6];
            for (int i = 0; i < 6;  ++i) { dogs[i] = new Dog(); }
            Console.WriteLine(Dog.Count);
            Console.Read();
        }
        class Dog
        {
            private static int Count; // 静态字段
            public Dog()
            { ++Count; }
         }
 }
运行结果是什么,为什么count没初始化,都可以++ 的?

解决方案 »

  1.   

    count 是int型的,int型的默认值是 0 ,声明count的时候,虽然没有显示初始化,但是编译器已经给它分配了一个0这个默认值。静态字段是属于类的,要用类名来访问。
      

  2.   

    类的域成员如果没有显式初始化,都使用其默认值。
    整数类型默认初始值是0,引用类型默认初始值是null。
      

  3.   

    不关静态字段的问题. 类中的整型变量都有默认的初始值: 0. bool型的默认的初始值: false.当然方法中声明的局部变量不存在上述约定.
      

  4.   

    有问题,你的Count是私有静态成员,怎么能在类外访问呢? 

    private static int Count; 
    改成:public static int Count;  //定义为公有成员,默认初值是0
    结果当然是6