■ 얕은 복사(Shallow Copy) :
- 새 메모리 공간 할당하지 않음, 주소 값만 복사
- 복사된 두 객체는 동일한 메모리 사용
■ 깊은 복사(Deep Copy) :
- 새 메모리 공간 할당, 값 자체를 복사
- 복사된 두 객체는 독립적으로 메모리 사용
■ Example
class TestClass
{
public int x;
public int y;
public TestClass DeepCopy()
{
TestClass testCopy = new TestClass();
testCopy.x = this.x;
testCopy.y = this.y;
return testCopy;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine($"[Shallow Copy Example]");
TestClass shallowTest1 = new TestClass();
shallowTest1.x = 100;
shallowTest1.y = 200;
TestClass shallowTest2 = shallowTest1;
shallowTest2.x = 300;
shallowTest2.y = 400;
Console.WriteLine($"shallowTest1.x : {shallowTest1.x}, shallowTest1.y : {shallowTest1.y}");
Console.WriteLine($"shallowTest2.x : {shallowTest2.x}, shallowTest2.y : {shallowTest2.y}");
Console.WriteLine();
Console.WriteLine($"[Deep Copy Example]");
TestClass deepTest1 = new TestClass();
deepTest1.x = 100;
deepTest1.y = 200;
TestClass deepTest2 = deepTest1.DeepCopy();
deepTest2.x = 300;
deepTest2.y = 400;
Console.WriteLine($"deepTest1.x : {deepTest1.x}, deepTest1.y : {deepTest1.y}");
Console.WriteLine($"deepTest2.x : {deepTest2.x}, deepTest2.y : {deepTest2.y}");
}
}
'개인공부 > C#' 카테고리의 다른 글
[C#] 접근 제한자(Access Modifier) (0) | 2022.09.06 |
---|---|
[C#] 정적(Static) 클래스, 필드, 메서드 (0) | 2022.09.05 |
[C#] 클래스(Class) (0) | 2022.09.01 |
[C#] Call by Value, Call by Reference (0) | 2022.08.31 |
[C#] 메서드(Method) (0) | 2022.08.31 |