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