私は持っています:
public static BlockQuadrant[] EditModeBlocks = new BlockQuadrant[9];
しかし、それらを使おうとすると、null値の例外が発生し、明らかにすべての値がnullに等しくなります。これはクラス内の値だと思いましたが、コンストラクターですべてを定義しました。BlockQuadrant
この場合、BlockQuadrant
null値の代わりに実際のインスタンスで配列を埋めるようにする方法はありますか?
私は持っています:
public static BlockQuadrant[] EditModeBlocks = new BlockQuadrant[9];
しかし、それらを使おうとすると、null値の例外が発生し、明らかにすべての値がnullに等しくなります。これはクラス内の値だと思いましたが、コンストラクターですべてを定義しました。BlockQuadrant
この場合、BlockQuadrant
null値の代わりに実際のインスタンスで配列を埋めるようにする方法はありますか?
参照オブジェクトの配列を作成すると、配列のみが作成され、その中のオブジェクトは作成されません。コンストラクターを呼び出して、個々のオブジェクトを初期化する必要があります。
次のように、LINQを使用してショートカットを作成できます。
public static BlockQuadrant[] EditModeBlocks = Enumerable
.Range(0, 9)
.Select(i => new BlockQuadrant())
.ToArray();
配列をループしてnew
要素を処理することに問題がありますか?
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();
}
}