为什么将列表转换为数组不在c#中引用?

c#

.Net 中的数组是引用类型。鉴于上面的两个代码段。问题:为什么设置值变量“fixedItem”会影响第一段代码中的变量“data”,而第二段代码是不影响

第一段代码:

        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}}

回答

文档

根据文档 list.ToArray() 方法返回带有原始列表副本的数组


以上是为什么将列表转换为数组不在c#中引用?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>