【发布时间】:2018-03-07 10:25:16
【问题描述】:
我正在测试如何从一个函数返回多个数据。我试图使用int[] 的列表。为此,我有一个返回List<int[]> 的函数,如下所示:
private List<int[]> Test()
{
List<int[]> testlist = new List<int[]>();
int[] record = new int[3];
record[0] = 1;
record[1] = 2;
record[2] = 3;
testlist.Add(record);
record[0] = 11;
record[1] = 12;
record[2] = 13;
testlist.Add(record);
return testlist;
}
当我检查列表的内容时,我看到它包含 2 条记录,但它们都包含 int[] 的最后一条记录。这意味着,而不是
list[0] = {1,2,3}
list[1] = {11,12,13}
我明白了
list[0] = {11,12,13}
list[1] = {11,12,13}
我想知道为什么会这样。
【问题讨论】:
-
数组是引用类型。您将相同的引用两次添加到列表中,然后修改它。您必须改为创建一个新数组。
-
您正在向两个元素添加相同的数组。为每个元素创建一个新数组。
-
你需要在
testlist.Add(record);之后做record = new int[3]; -
您需要在添加第一条记录后创建另一个数组。即在第一个
testlist.Add(record)之后再次添加这一行record = new int[3]; -
感谢大家非常快速和准确的回复!进一步阅读链接也非常有用