1 回答

TA貢獻1860條經(jīng)驗 獲得超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 循環(huán)之外使用單個數(shù)組來減少內(nèi)存使用量。但是,這會對您的字典產(chǎn)生意想不到的副作用!
字典將通過引用存儲數(shù)組。在填充循環(huán)的第一次迭代中,您調(diào)用usernames.Add(..., tempArray)which 將tempArray實例分配給第一個用戶鍵。然后第二次迭代重新使用相同的數(shù)組并將其分配給下一個用戶密鑰。由于您沒有為每個用戶初始化一個新的數(shù)組實例,因此您實際上是將所有鍵與同一個數(shù)組相關(guān)聯(lián)。循環(huán)的最后一次迭代將決定這個數(shù)組的狀態(tài)。
這應該解決它:
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 關(guān)注
- 129 瀏覽
添加回答
舉報