-
2024.03.05 - 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)C# 2024. 3. 5. 17:03
앞서 값 형식과 참조 형식의 데이터 처리에 대해서 배웠다.
클래스는 참조 형식의 데이터이다. 클래스를 복사하려고 해보자.
class CopyTest { public int num; public int num2; }
CopyTest t = new CopyTest(); t.num = 1; t.num2 = 2; CopyTest b = t;
CopyTest 클래스를 만들고 Main에서 CopyTest 객체를 2개 만들어서 하나는 다른 객체를 대입시켰다. 객체 b는 객체 t와 다른 데이터를 가지는 각각의 객체가 되었을까? 시험해보자.
t와 b가 다른 데이터를 가지고 있다면 b의 num2의 값을 변경했을 때 t의 num2의 값은 변경되지 않았을 것이다.
결과는 그렇지 않다. 이것이 얕은 복사(Shallow Copy)이다. 얕은 복사는 객체의 참조만 복사하는 것이다. 실질적으로 t와 b는 같은 객체를 가리키고 있다.
t객체를 복사해서 b가 다른 객체를 가리키게 하고싶다. 이렇게.
방법이 있다. 클래스 안에서 새로운 객체를 만들어서 새로운 객체가 가지는 데이터를 기존 객체에서 복사하는 것이다.
class CopyTest { public int num; public int num2; public CopyTest DeepCopy() { CopyTest newCopy = new CopyTest(); newCopy.num = num; newCopy.num2 = num2; return newCopy; } }
이것이 깊은 복사(Deep Copy)이다. 깊은 복사는 객체를 복사해서 새로운 객체를 만드는 것이다.
'C#' 카테고리의 다른 글
2024.03.05 - 프로퍼티(Property) (0) 2024.03.05 2024.03.05 - static 변수 (0) 2024.03.05 2024.03.04 - 키 입력 받기 (0) 2024.03.05 2024.03.04 - 출력, 입력, 배열, foreach (0) 2024.03.04 2024.03.04 - 값 형식(Value types)과 참조 형식(Reference types) (0) 2024.03.04