c# - 如何创建一个动态List<List<string>>?

标签 c# list

我想读取文件中的一些文本。正文如下:

一个

////

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/

相关文章:

c# - 在字符串中一次以8个字符添加一个`-`,然后又以4个字符添加一个?

c# - WCF - 地址过滤器不匹配

c# - 什么是 Microsoft.DependencyValidation.Analyser,为什么 Visual Studio 2017 会强制安装包?

Python列表转换成整数

python-3.x - 如果我在带括号的列表中有重复项,我该怎么办

javascript - 如何在 JavaScript 上为对象列表创建循环

python - 将计数器列表保存到 python 中的文件中

python - 重新排列点列表以达到它们之间的最短距离

c# - Microsoft Graph token 不包含任何权限,或者无法理解权限

c# - MVVM 从 TabControl 选择新选项卡