C# 얕은 복사 및 깊이 복사

3033 단어 딥 카피
C#에는 두 가지 유형의 변수가 있습니다. 하나는 값 유형 변수이고 하나는 참조 유형 변수입니다.
값 유형 변수의 경우 깊이 복사와 전 복사는 모두 값 부여 조작 기호(=)를 통해 이루어지는데 그 효과는 일치하며 대상의 값 유형의 필드를 새로운 대상에 복사한다.이것은 이해하기 쉽다.본고는 인용 유형 변수의 복사 메커니즘과 실현을 중점적으로 토론한다.
C#에서 참조 유형 객체에 대한 copy 작업에는
얕은 복사 (그림자 복제/shallow copy): 대상의 값 형식 필드만 복사하고 대상의 인용 형식은 원래의 인용에 속합니다.
딥 클로닝(딥 클로닝): 객체의 값 유형 필드뿐만 아니라 원래 객체의 객체도 복제합니다.완전히 새로운 대상이 만들어진 거야.
얕은 복사와 깊은 복사 사이의 차이점: 얕은 복사는 대상의 수치 유형의 필드를 새로운 대상에 복사하는 것을 가리키며, 대상의 인용형 필드는 대상의 인용을 복제하는 것을 가리킨다.
주의:string 형식은 좀 특수합니다. 얕은 복사, 클래스 값 형식의 대상을 처리합니다.
 
딥 카피 구현:
먼저 클래스 정의 전에 [serializable]를 선언하고 클래스가 ICloneable을 계승하고 Clone 방법을 실현해야 한다.
 1         public object Clone()

 2         {

 3             using (MemoryStream ms = new MemoryStream(1000))

 4             {

 5                 object CloneObject;

 6                 BinaryFormatter bf = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));

 7                 bf.Serialize(ms, this);

 8                 ms.Seek(0, SeekOrigin.Begin);

 9                 //  ( )

10                 CloneObject = bf.Deserialize(ms);

11                 //   

12                 ms.Close();

13                 return CloneObject;

14             }

15         }
 
 
참고 자료: http://tech.it168.com/a2009/0515/279/000000279286.shtml

좋은 웹페이지 즐겨찾기