C#의 개체 복제
다음 코드는 C#에서 참조 유형(클래스)과 값 유형(구조)의 동작 차이를 보여줍니다. 특히 질문은 다음과 같습니다. C#에서 메모리의 다른 영역을 가리키는 개체의 복사본을 어떻게 생성합니까?
C#의 클래스는 참조 유형입니다. 즉, 클래스 개체를 다른 개체에 할당하면 실제로 동일한 기본 개체에 대한 참조가 할당됩니다. 따라서 두 개체 중 하나를 변경하면 두 인스턴스 모두에 영향을 미칩니다. 제공된 코드에서 objectA를 objectB에 할당하면 별도의 인스턴스가 아닌 objectA의 별칭이 생성됩니다.
객체의 실제 복사본을 만들려면 클래스에 ICloneable
인터페이스를 구현해야 합니다. 이 인터페이스는 객체의 새 인스턴스를 생성하는 Clone()
메서드를 제공합니다. Clone()
메서드를 재정의하면 복제 프로세스를 제어하고 복사해야 하는 필드와 속성을 정의할 수 있습니다.
제공된 코드에서 다음 코드 조각은 복제 구현 방법을 보여줍니다.
<code class="language-csharp">class myClass : ICloneable { public String test; public object Clone() { return this.MemberwiseClone(); } }</code>
클래스가 ICloneable
을 구현하면 다음 코드를 사용하여 실제 복사본을 만들 수 있습니다.
<code class="language-csharp">myClass a = new myClass(); myClass b = (myClass)a.Clone();</code>
MemberwiseClone()
은 모든 필드와 속성의 값을 복사하지만 중첩된 개체는 복사하지 않는 얕은 복사본을 생성한다는 점에 유의해야 합니다. 전체 복사본을 생성해야 하는 경우 중첩된 개체를 고려하는 사용자 지정 복제 프로세스를 구현해야 합니다.
위 내용은 C#에서 개체의 전체 또는 얕은 복사본을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!