차례:
정의-얕은 복사 란 무엇입니까?
C #의 얕은 복사는 원본 객체와 동일한 유형의 새 인스턴스를 인스턴스화하고 기존 객체의 비 정적 멤버를 복제본에 복사하여 객체의 복제본을 생성하는 프로세스입니다. 값 유형의 멤버는 비트 단위로 복사되는 반면 참조 유형의 멤버는 참조 된 오브젝트와 해당 복제가 동일한 오브젝트를 참조하도록 복사됩니다.
일반적으로 응용 프로그램 전체에서 개체가 변경되지 않는 조건과 함께 성능이 요구 사항 중 하나 인 경우 얕은 복사가 사용됩니다. 변경 불가능한 데이터가 포함 된 클론을 전달하면 코드에 의한 손상 가능성이 제거됩니다. 얕은 복사는 객체 참조가 객체를 메모리 주소로 전달할 수있어 전체 객체를 복사 할 필요가없는 효율적인 것으로 밝혀졌습니다.
얕은 사본은 멤버 별 사본이라고도합니다.
Techopedia는 Shallow Copy를 설명합니다
얕은 복사는 객체의 각 멤버를 다른 객체의 멤버에 할당 할 때의 깊은 복사와 유사하지만 참조 유형의 필드가 복사되는 방식이 다릅니다. 참조 만 복사되는 얕은 복사와 달리 깊은 복사에서는 참조 된 개체의 새 복사본이 만들어집니다.
예를 들어, 여러 직원 주소를 저장하는 주소 개체 목록을 포함하여 개인 정보의 세부 정보가 포함 된 직원 개체를 고려하십시오. 직원 오브젝트의 단순 사본을 수행하여 원래 직원 오브젝트가 소유 한 동일한 주소 오브젝트 목록을 참조하여 직원 오브젝트의 복제본을 작성할 수 있습니다.
단순 복사를 수행하는 방법은 다음과 같습니다.- 개체의 MemberwiseClone 메서드를 호출하십시오.
- 지루하지만 제어하기 쉬운 사용자 정의 방법을 통해 수동으로 클론 생성
- 얕은 복사를 수행 할 수있는 자동화 된 기능을 제공하지만 성능 오버 헤드가있는 리플렉션 기법을 사용하십시오.
- 리플렉션보다 느리지 만 자동화되고 간단한 직렬화 방법을 사용하십시오.