C#에서 Deep Copy하기!


C#에서 Deep Copy하기!

C#에서는 Value Type의 변수와 Reference Type의 변수 2가지 종류가 존재합니다. 기본적으로 Value Type의 변수들은 변수의 내용이 그대로 복사되는 C++에서의 흔한 Call By Value처럼 처리가 됩니다.

값을 모두 복사하여 사용하기 때문에 복사하는 과정에서의 오버헤드를 피할 수가 없습니다. 그렇다보니 C#은 대부분의 변수들이 Reference Type으로 처리됩니다.

이는 C++에서 포인터 타입과 같고, Managed이기 때문에 사실상 Smart Pointer와 같습니다. 그래서 Reference Counter로 관리가 되고, Ref Counter가 0이 된다면 GC에 의해서 정리가 되도록 되어 있습니다.

근데 여기서 하나 문제가 생기게 됩니다. 일부 ref type의 변수의 복사본이 하나 필요한 경우가 발생할 수 있지요. class SomeClass { // Some Variables }; SomeClass a = new SomeClass(/* ini...



원문링크 : C#에서 Deep Copy하기!