2

我有:

public static BlockQuadrant[] EditModeBlocks = new BlockQuadrant[9];

但是当我尝试使用它们时,我得到一个空值异常,显然所有的值都等于空。我认为这是我类BlockQuadrant的一个值,但我在构造函数中定义了所有内容。如果是这种情况,有没有办法让它用实际实例BlockQuadrant而不是空值填充数组?

4

3 回答 3

4

当您构造一个引用对象数组时,它只构造一个数组,而不是其中的对象。您需要通过调用构造函数来初始化各个对象。

您可以使用 LINQ 使用快捷方式,如下所示:

public static BlockQuadrant[] EditModeBlocks = Enumerable
    .Range(0, 9)
    .Select(i => new BlockQuadrant())
    .ToArray();
于 2012-11-18T02:29:57.240 回答
2

循环遍历数组和newing 元素有问题吗?

for (int ii = 0; ii < EditModeBlocks.Length; ii++)
{
    EditModeBlocks[ii] = new BlockQuadrant();
}

使用您的初始语句,您已经创建了一个具有默认值的数组。对于引用类型,默认值为null

于 2012-11-18T02:29:48.863 回答
0

在使用数组之前,您必须实例化数组中的每个元素,因为数组的元素中包含 null。

public static BlockQuadrant[] EditModeBlocks = new BlockQuadrant[9];

在某些静态方法中,使用循环来实例化它们。

private static someMethod()
{
    for (int i = 0; i < EditModeBlocks.Length; i++)
    {
        EditModeBlocks[i] = new BlockQuadrant();
    }
}
于 2012-11-18T02:30:50.777 回答