0
        Dictionary<string, string> f = new Dictionary<string, string>();
        Dictionary<int, Dictionary<string, string>> lines = new Dictionary<int, Dictionary<string, string>>();

        while ((line = sr.ReadLine()) != null)
        {
            lineArr = line.Split(',');
            int x = 0;
            foreach (string field in lineArr)
            {
                f.Add(keys[x], field);
                x++;
            }
            lines.Add(lineIndex, f);
            f.Clear();
            lineIndex++;

字典 f 是临时的,我想将它的值存储在另一个字典中,但是一旦我清除()它,字典行中的值就会丢失,我想它会提供某种参考。知道如何解决这个问题吗?

4

2 回答 2

8

移动f循环内的声明。这样您就不必每次都清空它并且引用保持不变:

Dictionary<int, Dictionary<string, string>> lines = new Dictionary<int, Dictionary<string, string>>();

while ((line = sr.ReadLine()) != null)
{
    Dictionary<string, string> f = new Dictionary<string, string>();

    lineArr = line.Split(',');
    int x = 0;
    foreach (string field in lineArr)
    {
        f.Add(keys[x], field);
        x++;
    }
    lines.Add(lineIndex, f);

    lineIndex++;
于 2012-04-12T15:54:10.400 回答
2

变量f持有对 a 的引用Dictionary<string, string>对象的引用。当您将它添加到另一个字典时,您并没有创建一个新对象,而只是对同一对象的另一个引用。

我强烈建议在f = new Dictionary<string, string>()这里选择阻力最小的路径。

于 2012-04-12T15:55:23.957 回答