无法创建嵌套列表,因为 list.Clear 似乎无法正常工作

Can't create nested list because list.Clear doesn't seem to work as I want

我尝试将由 200 行每行不同长度组成的 txt 文件加载到嵌套列表中,以便主列表中的每个子列表都等于行,因此将有 200 个子列表。

class MainClass
{
        public static void Main (string[] args)
        {
            List<List<int>> arrayList = new List<List<int>>();
            List<int> tmp = new List <int> ();
            string[] file = File.ReadAllLines(@"C:\file.txt");

            foreach (string line in  file) {
                string[] linef = line.Split (new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);

                tmp.Clear ();

                for (int n = 0; n < linef.Length; n++) {
                    tmp.Add (int.Parse (linef [n]));
                }

                arrayList.Add (tmp);
            }

但是 arrayList 接缝只包含最后一行 - 每当我尝试获取一些数字时,例如 arrayList[78][5],无论第一个索引是什么,它都会给我第 200 行的第 5 个数字- 78 或其他。我认为 tmp.Clear 有问题,但我不知道如何让它工作。

因为你多次将相同的 List<int> tmp 添加到 arrayList,所以最后

 bool areSame = object.ReferenceEquals(arrayList[0], arrayList[1]); // true

您有 一个 List<int>n 个引用(arrayList 中每个 "row" 个引用)

改为:

 foreach (string line in  file) {
     List<int> tmp = new List <int> ();
     // No Clear necessary

tmp.Clear() 使您的列表为空,仅此而已。主列表仅包含 200 个对您的 tmp 列表的引用。 你得打电话

tmp = new List<int>();

而不是

tmp.Clear();