有一個數組和一個相同類型的列表。在一個循環中,我更改了數組,並在每次更改之後將其添加到列表中(在循環結束時,我想獲取由更改導致的所有數組的列表)。但是,當列出所有元素相同時,它們與添加到列表中的最後一個數組相同。這是爲什麼發生?將數組添加到列表中而不重複
byte[,] mat = new byte[3, 3];
List<byte[,]> list = new List<byte[,]>();
for (int m = 0; m < 9; ++m)
{
byte i = 0;
byte j = 0;
// Search for an empty cell (zero)
bool flag = false;
for (i = 0; i < 3; ++i)
{
for (j = 0; j < 3; ++j)
if (mat[i, j] == 0)
{
flag = true;
break;
}
if (flag) break;
}
// Adding a changed array to the list
mat[i, j] = 1;
list.Add(mat);
// List all items in the list
foreach (byte[,] a in list)
{
PrintMatrix(a);
}
}
應該'墊[I,J] = 1;'是你'標誌前右= TRUE;' ?因爲我和j在for循環之外沒有變化,所以你總是使0,0位置1。 –
不是一個答案,但我可以強烈建議你不要命名一個List'list'嗎? 'mats'? 'listMats'? 'matList'? – zzxyz