我想读一些文件中的文字。文字如下:
A
////
乙
C
///
d
电子
˚F
////
我想创建一个List<List<string>>
来存储数据。所以我这样编程:
List<string> event = new List<string>();
List<List<string>> eventList = new List<List<string>>();
System.IO.StreamReader f = new System.IO.StreamReader("list.txt");
string line = f.ReadLine();
while (line != null && (! line.Equals("")))
{
if (line[0].Equals('/'))
{
eventList.Add(event);
event.Clear();
}
else
{
event.Add(line);
}
line = f.ReadLine();
}
我想要的是是一个列表列表,其中第一个列表是A,第二个列表是B,C,第三个列表是D,E,F
但我得到的也是一个列表列表,其中第一个列表是D,E,F,第二个列表和第三个列表都是D,E,F
有人知道如何调试吗?
答案 0 :(得分:3)
执行此操作时:
eventList.Add(event);
您并非复制 event
列表 - 您正在向eventList
添加参考。所以当你这样做时:
event.Clear();
它会影响您刚刚添加的列表(因为它是同一个对象)。所以你只使用一个列表。因此,当您完成后,您的eventList最终会有三个对相同列表的引用,其中包含您上次清除它后添加的内容。
而不是event.Clear()
,您应该制作一个新列表:event = new List<string>();