C#实例化类数组 为什么不执行构造器

.Net技术 码拜 7年前 (2015-07-18) 787次浏览 0个评论
myInfo[] ArrayMyInfo = new myInfo[100];

if (myInfo.statisitic == ArrayMyInfo.Length)      //debug下 myInfo.statisitic为0
    Console.WriteLine("Yes"); 

class myInfo
{      
    public static int statisitic = 0;
    public myInfo()
    {
         statisitic++;
    }
}

为什么 myInfo.statisitic为0,而不是100?

5分

#1

你没有实例化任何 myInfo 对象,不过是创建一个数组对象而已嘛。

#2

因为ArrayMyInfo?里面的元素全部都是null
好比
myInfo ArrayMyInfo;

你没有new之前,它不过是个null,没有实例

10分

#3

class myInfo
{     
   //静态变量,属于类,不过存在多少类实例,静态实例变量仅仅初始化一次,单独存储一块内存空间 
   public static int statisitic = 0;
   //实例构造函数,在实例化对象的时候调用
    public myInfo()
    {
         statisitic++;
    }
}
//定义并初始化数组数组长度初始化为100,这里不涉及对类对象初始化
myInfo[] ArrayMyInfo = new myInfo[100];

//这个时候,才调用类实例构造函数
myInfo mi = new myInfo();
ArrayMyInfo[0] = mi;
5分

#4

default(myInfo) == null
20分

#5

我知道楼主哪里不理解
楼主以为
myInfo[] ArrayMyInfo = new myInfo[100]
就是实例化了100个myInfo
其实这只是实例化了个数组,里面的元素并没有实例化,都是null

你需要这样
for(int i=0;i<100;i++)
{
ArrayMyInfo[i]=new myInfo();
}

#6

我明白了,非常感谢大家

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#实例化类数组 为什么不执行构造器
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!