이 경우배열을 사용하여 구조체를 복사 할 때 전체 복사본을 강제로 만드는 방법?
struct A {
public double[] Data;
public int X;
}
operator=
를 사용하거나 컨테이너에 A
의 인스턴스를 추가 할 때 어떻게 깊은 복사본을 강제 할 수 있습니까?
문제는, 예를 들면 :
A a = new A();
var list = new List<A>();
list.Add(a); // does not make a deep copy of Data
A b = a; // does not make a deep copy of Data
정말 모든 시간을 내 자신의 DeepClone
메소드를 구현하고 전화를해야합니까? 이것은 극단적으로 오류가 발생하기 쉽습니다 ...
+1 : 가능한 경우 간단한 클래스를 변경하지 않는 것이 좋으며 사용하는 경우 오류 가능성이 줄어 듭니다. 예를 들어 딥 복사를 구현하더라도 코드 소비자가 실제로 사용한다는 보장은 없습니다. 특히 구조체의 경우, 변경 가능성은 예상하지 못합니다. –