如何创建一个动态List <list <string>&gt;?</list <string>

时间:2014-07-30 01:34:26

标签: c# list

我想读一些文件中的文字。文字如下:

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

有人知道如何调试吗?

1 个答案:

答案 0 :(得分:3)

执行此操作时:

 eventList.Add(event);

您并非复制 event列表 - 您正在向eventList添加参考。所以当你这样做时:

event.Clear();

它会影响您刚刚添加的列表(因为它是同一个对象)。所以你只使用一个列表。因此,当您完成后,您的eventList最终会有三个对相同列表的引用,其中包含您上次清除它后添加的内容。

而不是event.Clear(),您应该制作一个新列表:event = new List<string>();