Hãy nói rằng tôi có một lớp học
public class MyObject
{
public int SimpleInt{get;set;}
}
Và tôi có một List<MyObject>
, và tôi ToList()
và sau đó thay đổi một trong những SimpleInt
thay đổi của tôi sẽ được đưa trở lại danh sách ban đầu. Nói cách khác, đầu ra của phương pháp nào sau đây?
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;
}
Tại sao?
P / S: Tôi xin lỗi nếu có vẻ rõ ràng để tìm hiểu. Nhưng tôi không có trình biên dịch với tôi bây giờ ...
.ToList()
làm cho một bản sao nông . Các tham chiếu được sao chép, nhưng các tham chiếu mới vẫn trỏ đến cùng các trường hợp như các tham chiếu ban đầu trỏ đến. Khi bạn nghĩ về nó,ToList
không thể tạo bất kỳnew MyObject()
khi nàoMyObject
là mộtclass
loại.