C# 如何从嵌套列表中获取/显示项目<;列表<;int>&燃气轮机;在C中#
我在C#中遇到了一个问题,无法显示嵌套int列表中的一个元素。 当我有一份清单时:C# 如何从嵌套列表中获取/显示项目<;列表<;int>&燃气轮机;在C中#,c#,list,C#,List,我在C#中遇到了一个问题,无法显示嵌套int列表中的一个元素。 当我有一份清单时: List<List<int>> List = new List<List<int>>(); 我如何显示,例如,仅显示“1”? 当我尝试这个时: this.textBox2.Text = (Convert.ToString(List[0][0])); 我的textBox2是空的,但当我试图计算列表并检查列表中有多少子列表时,它工作正常(显示“3”): 但第1个子列
List<List<int>> List = new List<List<int>>();
我如何显示,例如,仅显示“1”?
当我尝试这个时:
this.textBox2.Text = (Convert.ToString(List[0][0]));
我的textBox2是空的,但当我试图计算列表并检查列表中有多少子列表时,它工作正常(显示“3”):
但第1个子列表中有多少元素不起作用(显示“0”,应显示“1”):
谢谢你的帮助
编辑:
我发现当我填写清单时,例如:
SubList.Add(2);
SubList.Add(3);
List.Add(SubList);
SubList.Clear();
当使用相同的子列表并清除它时,问题看起来就像清除列表一样
如何正确地只使用一个相同的子列表来填充列表?这对我很有用:
List<List<int>> List = new List<List<int>>();
List<int> SubList = new List<int>();
List.Add(new List<int> { 1 });
List.Add(new List<int> { 2, 3 });
List.Add(new List<int> { 4, 5, 6 });
this.textBox2.Text = List[0].Count.ToString();
我不知道您是如何填写列表的。您正在创建一个子列表,将其添加到父列表中,然后清除子列表: 请记住,列表是引用,这意味着外部列表是内部列表的引用列表。清除内部列表时,外部列表引用了同一个内部列表,因此也会被清除(因为它是同一个实例) 这类似于:
- “创造”纸袋
- 把苹果放在纸袋里
- 把纸袋放在盒子里
- 清空纸袋
List.Add(new List<int>(SubList)); // make a copy
List.Add(新列表(子列表));//复印
SubList = new List<int>();
SubList=newlist();
你能告诉我你是怎么填的吗?您显示的语法无效。如果无法获取列表的第一项并且
Count
返回零,则听起来您的列表实际上是空的。在获取第一个项时,应该得到一个索引越界错误,但必须捕获该异常并忽略它。不要那样做。这是一件非常糟糕的事情。问题一定在代码中的其他地方。这里有一个小提琴显示它在工作(类似于已经提供的答案):如果能看到更多相关的代码会很有帮助。我编辑了我的帖子,问题是当我只使用一个子列表来填充列表时,例如在循环中。他想从中间列表读取值,所以列表[1][0]应该在您的示例中返回数字2。列表[I][j]是访问课程嵌套列表的正确方法。但在上次编辑之前,这个答案的版本遗漏了它。你是对的。感谢您指出这一点。因此,唯一的方法是使用List SubList=new List()代码>在循环的每个开始处?要么如此,要么在添加子列表时复制它-每个子列表都需要是不同的引用
SubList.Add(2);
SubList.Add(3);
List.Add(SubList);
SubList.Clear();
List<List<int>> List = new List<List<int>>();
List<int> SubList = new List<int>();
List.Add(new List<int> { 1 });
List.Add(new List<int> { 2, 3 });
List.Add(new List<int> { 4, 5, 6 });
this.textBox2.Text = List[0].Count.ToString();
this.textBox2.Text = List[2][1].ToString();
SubList.Add(2);
SubList.Add(3);
List.Add(SubList);
SubList.Clear();
List.Add(new List<int>(SubList)); // make a copy
SubList = new List<int>();