【发布时间】:2021-09-10 11:00:00
【问题描述】:
.Net 中的数组是引用类型。 给定上面的两个代码段。 问题:为什么设置值变量“fixedItem”影响第一段代码中的变量“数据”,但第二段代码不影响
第一个代码段:
var data = new List<IList<int>>();
data.Add(new List<int>() { 1, 2, 3 });
data.Add(new List<int>() { 3, 8, 6,5 });
data.Add(new List<int>() { 1, 2 });
var fixedItem = data.Last();
fixedItem[1] = 8;
//Result:
//data = {{1,2,3}, {3,8,6,5}, {1,8}}
第二段代码:
var data = new List<IList<int>>();
data.Add(new List<int>() { 1, 2, 3 });
data.Add(new List<int>() { 3, 8, 6,5 });
data.Add(new List<int>() { 1, 2 });
var fixedItem = data.Last().ToArray();
fixedItem[1] = 8;
//Result:
//data = {{1,2,3}, {3,8,6,5}, {1,2}}
【问题讨论】:
-
你已经用
ToArray创建了一个新的集合(值类型) -
如果您想要一致的结果,请使用
var fixedItem = data.Last().ToList();。