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








