C# 如何创建一个动态列表<;列表<;字符串>>;?
我想读取文件中的一些文本。案文如下: A //// B C /// D E F //// 我想创建一个C# 如何创建一个动态列表<;列表<;字符串>>;?,c#,list,C#,List,我想读取文件中的一些文本。案文如下: A //// B C /// D E F //// 我想创建一个列表,用于存储数据。所以我的程序是这样的: List<string> event = new List<string>(); List<List<string>> eventList = new List<List<string>>(); System.IO.StreamReader f = new System.I
列表
,用于存储数据。所以我的程序是这样的:
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();
}
List事件=新建列表();
List eventList=新列表();
System.IO.StreamReader f=新的System.IO.StreamReader(“list.txt”);
字符串行=f.ReadLine();
while(line!=null&(!line.Equals(“”))
{
如果(第[0]行)。等于(“/”)
{
添加(事件);
event.Clear();
}
其他的
{
事件。添加(行);
}
line=f.ReadLine();
}
我想得到的是一个列表,其中第一个列表是A,第二个列表是B,C,第三个列表是D,E,F
但是我得到的也是一个列表列表,其中第一个列表是D,E,F,第二个列表和第三个列表都是D,E,F
有人知道如何调试它吗?执行此操作时:
eventList.Add(event);
event.Clear();
您没有复制事件
列表-您将引用添加到事件列表
。所以当你这样做的时候:
eventList.Add(event);
event.Clear();
它会影响刚刚添加的列表(因为它是同一个对象)。因此,您只处理一个列表。因此,当您完成后,您的事件列表最终会有三个对相同的列表的引用,其中包含上次清除后添加的内容
您应该创建一个新列表,而不是event.Clear()
:event=new list()代码>