我正在使用'|'分隔符从c#文件中读取文本,从文本创建类对象,然后将这些对象推到列表上
本文关键字:对象 然后 创建 列表 文本 读取 分隔符 文件 取文本 | 更新日期: 2023-09-27 18:16:41
问题是,我的列表中的每个条目都会成为刚刚添加的条目的副本。
基本上,如果我的列表中有10个对象(文本文件中的10行),列表中的所有10个对象都将成为第10个对象的副本。这在循环过程中的任何一点都是正确的,如果我在第六次迭代时停止,所有之前的5个条目现在都将是我添加的第六行的副本。这是我的循环:
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]));
}
}
尝试删除大括号,而不是
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]));
}
}