이 오래된 게시물을 우연히 발견하고 내 2 센트를 추가 할 생각이었습니다. 일반적으로 의심스러운 경우 모든 개체에서 GetHashCode () 메서드를 사용하여 ID를 확인합니다. 그래서 위의-
public class MyObject
{
public int SimpleInt { get; set; }
}
class Program
{
public static void RunChangeList()
{
var objs = new List<MyObject>() { new MyObject() { SimpleInt = 0 } };
Console.WriteLine("objs: {0}", objs.GetHashCode());
Console.WriteLine("objs[0]: {0}", objs[0].GetHashCode());
var whatInt = ChangeToList(objs);
Console.WriteLine("whatInt: {0}", whatInt.GetHashCode());
}
public static int ChangeToList(List<MyObject> objects)
{
Console.WriteLine("objects: {0}", objects.GetHashCode());
Console.WriteLine("objects[0]: {0}", objects[0].GetHashCode());
var objectList = objects.ToList();
Console.WriteLine("objectList: {0}", objectList.GetHashCode());
Console.WriteLine("objectList[0]: {0}", objectList[0].GetHashCode());
objectList[0].SimpleInt = 5;
return objects[0].SimpleInt;
}
private static void Main(string[] args)
{
RunChangeList();
Console.ReadLine();
}
그리고 내 컴퓨터에 대답하십시오-
- 목표 : 45653674
- 목표 [0] : 41149443
- 사물 : 45653674
- 객체 [0] : 41149443
- objectList : 39785641
- objectList [0] : 41149443
- whatInt : 5
따라서 본질적으로 목록이 전달하는 객체는 위 코드에서 동일하게 유지됩니다. 접근 방식이 도움이되기를 바랍니다.
.ToList()
만드는 것 입니다. 참조는 복사되지만 새 참조는 여전히 원래 참조가 가리키는 것과 동일한 인스턴스를 가리 킵니다. 당신이 그것을 생각할 때 유형 이 언제 인지 만들 수 없습니다 .ToList
new MyObject()
MyObject
class