我想读取文件中的一些文本。正文如下:
一个
////
B
C
///
D
E
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
有人知道如何调试它吗?
最佳答案
当你这样做时:
eventList.Add(event);
您没有复制event
列表 - 您正在向 eventList
添加对其的引用 。所以当你这样做时:
event.Clear();
它会影响您刚刚添加的列表(因为它是同一个对象)。所以你只需要处理一个列表。因此,当您完成后,您的 eventList 最终会包含对同一列表的三个引用,其中包含您上次清除后添加的内容。
而不是 event.Clear()
,您应该创建一个新列表:event = new List<string>();
关于c# - 如何创建一个动态List<List<string>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25027473/