ToList()-是否创建一个新列表?

假设我有一堂课

public class MyObject

{

public int SimpleInt{get;set;}

}

我有一个List<MyObject>ToList()然后将其更改为一个,然后SimpleInt将更改传播回原始列表。换句话说,以下方法的输出是什么?

public void RunChangeList()

{

var objs = new List<MyObject>(){new MyObject(){SimpleInt=0}};

var whatInt = ChangeToList(objs );

}

public int ChangeToList(List<MyObject> objects)

{

var objectList = objects.ToList();

objectList[0].SimpleInt=5;

return objects[0].SimpleInt;

}

为什么?

P / S:很抱歉,如果发现的话。但是我现在没有编译器了…

回答:

是的,ToList将创建一个新列表,但是由于在这种情况下MyObject是引用类型,因此新列表将包含对与原始列表相同的对象的引用。

更新SimpleInt新列表中引用的对象的属性也会影响原始列表中的等效对象。

(如果MyObject声明为struct而不是,class则新列表将包含原始列表中元素的副本,并且更新新列表中元素的属性 不会

影响原始列表中的等效元素。)

以上是 ToList()-是否创建一个新列表? 的全部内容, 来源链接: utcz.com/qa/412667.html

回到顶部