C# 얕은 복사 및 깊이 복사
3033 단어 딥 카피
값 유형 변수의 경우 깊이 복사와 전 복사는 모두 값 부여 조작 기호(=)를 통해 이루어지는데 그 효과는 일치하며 대상의 값 유형의 필드를 새로운 대상에 복사한다.이것은 이해하기 쉽다.본고는 인용 유형 변수의 복사 메커니즘과 실현을 중점적으로 토론한다.
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바의 복사 메커니즘을 깊이 이해하다만약 우리new가 새로운 대상을 낸다면, 하나의 성명으로 인용하고, 그 다음에 다른 성명으로 이전 성명을 인용한다면, 마지막 결과는 이 두 성명의 변수는 같은 대상을 가리키며, 한 곳은 모두 수정될 것이다.만약 우리...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.