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 关注
- 95 浏览
添加回答
举报