2017-04-09 19 views
0

リストにたくさんの配列を格納することについて質問があります。各ループのリストに多くの配列を格納する

まず、私は配列とリストを初期化します。

int[] arr = new int[9]; 
List<int[]> forkarr = new List<int[]>(); 

その後、私はforループの多くを介して実行し、すべての可能なチックタックつま先のバリエーションを生成するために、配列を毎回変更します。すべてのバリエーションをループしながら、配列が可能なボードであれば、それを印刷します。配列が特定の条件を満たす場合は、次のようにリストに追加します。

また、特定の配列がフォークであることを知らせるメッセージを出力します。

すべてのアレイを印刷しているときに、フォークであるものが正しく印刷され、そのようにラベルされます。しかし

、私はそうのような私のリストforkarrのint型[]の要素の全てプリントアウトに行く:何らかの理由で

foreach (int[] arry in forkarr) 
      { 
       PrintGame.print(arry);//this is my method that prints the array 
       Console.WriteLine(); 
      } 

は、各配列は同じになる:

222 
222 
222 

(私は2を「X」、1を「O」、0を「空」のbtwとして使用しています)

そして、すべてのフォークについて何度も繰り返し出力します。

だから、配列の各変更をリストの新しい要素として追加しているときに何かが間違っていると思っていますが、その理由はわかりません。

ありがとうございました。

答えて

1

同じ配列を変更してリストに追加するためです。ある配列配列を処理するたびに、次のように新しいインスタンスを作成する必要があります。

arr = new int[9]; 

これにより、他の配列から独立した新しい参照が作成されます。それを変更することは他の人には影響しません。あなたは以下の質問を参照することができます参照型対値の詳細については

What is the difference between a reference type and value type in c#?

+0

おかげでたくさん!私はそれが何か単純だと思った – Schweeb

関連する問題