0

问题是,我列表中的每个条目都成为刚刚添加的条目的副本。

所以基本上,如果我的列表中有 10 个对象(文本文件中的 10 行),列表中的所有 10 个对象都将成为第 10 个对象的副本。在循环期间的任何时候都是如此,如果我在第 6 次迭代中停止,所有 5 个之前的条目现在将是我添加的第 6 行的副本。这是我的循环:

StreamReader lolz = new StreamReader("test.txt");

while (!lolz.EndOfStream)
{
    string line = lolz.ReadLine();
    string[] lines = line.Split('|');
    {
        tasksList.Add(new TaskList(lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6]));
    }
}

对我来说意义为 0。

4

1 回答 1

0

尝试删除大括号,而不是

string[] lines = line.Split('|');
{
    tasksList.Add(new TaskList(lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6]));
}

只是

string line = lolz.ReadLine();
string[] lines = line.Split('|');
tasksList.Add(new TaskList(lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6]));

似乎您通过引用获得了最后一个对象,您应该检查您是否没有使用静态类或静态成员,也许您应该发布整个代码以正确回答您的问题......

它应该像这样使用:

using(StreamReader lolz = new StreamReader("test.txt"))
{
    string line;
    string[] lines;
    while ((line = lolz .ReadLine()) != null)
    {
        lines = line.Split('|');
        tasksList.Add(new TaskList(lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6]));
    }
}
于 2013-05-31T22:56:38.447 回答