>백엔드 개발 >C++ >C#의 `ToList()`는 새로운 참조 목록이나 요소 복사본을 생성합니까?

C#의 `ToList()`는 새로운 참조 목록이나 요소 복사본을 생성합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-02 19:05:39761검색

Does C#'s `ToList()` Create a New List of References or Copies of Elements?

ToList()는 새 목록을 생성합니까?

C#에서 ToList() 메서드는 오리지널 컬렉션. 그러나 질문이 생깁니다. 새 참조 목록이나 요소 복사본이 생성됩니까?

다음 예를 고려하세요.

public class MyObject
{
    public int SimpleInt { get; set; }
}

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;
}

이 시나리오에서 ToList()는 새 참조 목록을 생성합니다. 원본 목록과 동일한 개체에 대한 참조 목록입니다. 이는 MyObject가 참조 유형이기 때문입니다. 즉, 개체의 주소를 메모리에 저장한다는 의미입니다.

새 목록에서 참조되는 개체의 SimpleInt 속성이 변경되면 변경 사항이 다음의 해당 개체로 다시 전파됩니다. 원래 목록. 이는 새 목록과 원래 목록이 모두 동일한 개체를 참조하기 때문입니다.

MyObject가 클래스 대신 구조체로 선언된 경우 ToList() 메서드는 다음 요소의 복사본을 사용하여 새 목록을 생성합니다. 원래 목록. 이 경우 새 목록의 요소에 대한 변경 사항은 원래 목록의 해당 요소에 영향을 미치지 않습니다.

위 내용은 C#의 `ToList()`는 새로운 참조 목록이나 요소 복사본을 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.