목록의 전체 복사본으로 진정한 객체 독립성 달성
예제 코드는 List<Book> books_1
개체를 포함하는 두 개의 목록(List<Book> books_2
및 Book
)을 보여줍니다. 간단한 할당으로 books_2
이 books_1
의 복사본으로 표시되지만 books_2
에 대한 변경 사항은 동일한 books_1
개체Book
에 대한 참조를 공유하므로
Deep Cloning의 중요성
진정으로 독립적인 사본을 만들려면 공유 참조를 피해야 합니다. 이를 위해서는 완전히 새로운 Book
개체를 생성하고 원본의 데이터로 개체를 채워야 합니다. 이 프로세스를 심층 복사라고 합니다.
딥 카피 구현
Select
또는 ConvertAll
메서드와 함께 람다 식을 사용하여 전체 복사본을 효율적으로 생성할 수 있습니다.
Select
사용:
<code class="language-csharp">List<Book> books_2 = books_1.Select(book => new Book(book.title)).ToList();</code>
ConvertAll
사용:
<code class="language-csharp">List<Book> books_2 = books_1.ConvertAll(book => new Book(book.title));</code>
두 접근 방식 모두 원래 Book
개체에서 title
속성을 복사하여 람다 식 내에서 새로운 Book
인스턴스를 생성합니다. 결과 books_2
목록에는 완전히 새롭고 독립적인 Book
개체가 포함됩니다.
딥 카피의 장점
전체 복사를 사용하면 books_2
에 대한 수정 사항이 books_1
에 영향을 주지 않습니다. 이는 원본 데이터를 변경하지 않고 수정된 복사본으로 작업해야 할 때 매우 중요합니다. 이 접근 방식은 데이터 무결성을 보장하고 의도하지 않은 부작용을 방지합니다.
위 내용은 진정한 객체 독립성을 위해 목록의 전체 복사본을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!