2016-05-05 2 views
2

ギザギザの配列で要素に要素を追加するときにNullReferenceExceptionが発生します。リストでギザギザの配列を初期化するforループで内部にを入れます

public List<int>[][] Map; 

void Start() 
{ 
    Map = new List<int>[60][]; 
    for(byte x = 0; x < 60 ; x++) 
    { 
     Map[x] = new List<int>[60]; 
     // initialization of rows 
    } 

    Map [23] [34].Add (21); 
} 
+0

リストに項目を追加する前に、リストをインスタンス化する必要があります。 I. 'Map [23] [34] = new List ()' –

答えて

2

それぞれの要素がそれぞれList<int>であるギザギザの配列があります。配列は初期化しますが、要素は初期化しません。

したがって、List<int>の初期化されていない要素でAddを呼び出すと例外が発生します。

Map = new List<int>[60][]; 
for (int x = 0; x < 60; x++) 
{ 
    Map[x] = new List<int>[60]; 

    for (int y = 0; y < 60; y++) 
    { 
     Map[x][y] = new List<int>(); // initializing elements 
    } 
    // initialization of rows 
} 

Map[23][34].Add(21); 
+0

あなたの答えをありがとう。 1つの質問を明確にする: 私がint配列を作るとき、intは内部では即座に初期化されますが、リスト配列ではリストはありませんか? – Jujek

+0

intは値型ですが、 'List 'は参照型です。値の型が初期化されると、値が取得されます。たとえば、intは0になり、boolはfalseになりますが、参照型のデフォルト値はnullです。したがって、それらにアクセスしようとするとNullReferenceExceptionが発生します。 – dotctor

+1

ああああ、ありがとう。私は値/参照型について何かを読んできましたが、今ではこれらの情報が最終的に接続を開始します。 – Jujek

関連する問題