'new'正在创建一个空数组,而不是一个空值类数组

时间:2012-07-15 03:44:38

标签: c# arrays class struct null

我有一个班级

namespace MyClassNameSpace {
   public struct a {
       public float Time;
       public float High;
   }
   public class SoC {
       public string Name;
       public a[] Stock =new a[9];
   }

}

在Form1中,我创建了一个SoC数组:

public static SoC[] b = new SoC[5];
private void Form1_KeyUp(object sender, KeyEventArgs e) {
    b[1].Name = "ABC"
}

问题是b是一个空数组,而不是empty(归零)SoC的数组......如何更改?

2 个答案:

答案 0 :(得分:9)

您正在创建 Reference(class)类型的引用变量数组。声明,

public static SoC[] b = new SoC[5];

创建 5 引用变量,其初始值为null。

这样你就可以创建对象了:

for(int i=0;i<b.Length;i++) {
    b[i]=new SoC();
}

答案 1 :(得分:3)

为阵列分配空间实际上并不创建对象。您需要遍历并调用每个项目的构造函数。