1 回答
TA貢獻1860條經驗 獲得超9個贊
您在評論中提供了以下代碼以填充您的字典:
string[] tempArray = new string[5];
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < 6; j++)
{
if (j != 0) tempArray[j-1] = userInfo[i, j];
}
userNames.Add(userInfo[i, 0], tempArray);
}
看起來您希望通過在 for 循環之外使用單個數組來減少內存使用量。但是,這會對您的字典產生意想不到的副作用!
字典將通過引用存儲數組。在填充循環的第一次迭代中,您調用usernames.Add(..., tempArray)which 將tempArray實例分配給第一個用戶鍵。然后第二次迭代重新使用相同的數組并將其分配給下一個用戶密鑰。由于您沒有為每個用戶初始化一個新的數組實例,因此您實際上是將所有鍵與同一個數組相關聯。循環的最后一次迭代將決定這個數組的狀態。
這應該解決它:
for (int i = 0; i < rows; i++)
{
string[] tempArray = new string[5];
for (int j = 0; j < 6; j++)
{
if (j != 0) tempArray[j-1] = userInfo[i, j];
}
userNames.Add(userInfo[i, 0], tempArray);
}
- 1 回答
- 0 關注
- 144 瀏覽
添加回答
舉報
