2

私は持っています:

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

しかし、それらを使おうとすると、null値の例外が発生し、明らかにすべての値がnullに等しくなります。これはクラスの値だと思いましたが、コンストラクターですべてを定義しました。BlockQuadrantこの場合、BlockQuadrantnull値の代わりに実際のインスタンスで配列を埋めるようにする方法はありますか?

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

配列をループしてnew要素を処理することに問題がありますか?

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 に答える