我有:
public static BlockQuadrant[] EditModeBlocks = new BlockQuadrant[9];
但是当我尝试使用它们时,我得到一个空值异常,显然所有的值都等于空。我认为这是我类中BlockQuadrant
的一个值,但我在构造函数中定义了所有内容。如果是这种情况,有没有办法让它用实际实例BlockQuadrant
而不是空值填充数组?
我有:
public static BlockQuadrant[] EditModeBlocks = new BlockQuadrant[9];
但是当我尝试使用它们时,我得到一个空值异常,显然所有的值都等于空。我认为这是我类中BlockQuadrant
的一个值,但我在构造函数中定义了所有内容。如果是这种情况,有没有办法让它用实际实例BlockQuadrant
而不是空值填充数组?
当您构造一个引用对象数组时,它只构造一个数组,而不是其中的对象。您需要通过调用构造函数来初始化各个对象。
您可以使用 LINQ 使用快捷方式,如下所示:
public static BlockQuadrant[] EditModeBlocks = Enumerable
.Range(0, 9)
.Select(i => new BlockQuadrant())
.ToArray();
循环遍历数组和new
ing 元素有问题吗?
for (int ii = 0; ii < EditModeBlocks.Length; ii++)
{
EditModeBlocks[ii] = new BlockQuadrant();
}
使用您的初始语句,您已经创建了一个具有默认值的数组。对于引用类型,默认值为null
。
在使用数组之前,您必须实例化数组中的每个元素,因为数组的元素中包含 null。
public static BlockQuadrant[] EditModeBlocks = new BlockQuadrant[9];
在某些静态方法中,使用循环来实例化它们。
private static someMethod()
{
for (int i = 0; i < EditModeBlocks.Length; i++)
{
EditModeBlocks[i] = new BlockQuadrant();
}
}