반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- c#
- gameinstancesubsystem
- 구현
- issac3d
- 2018 kakao
- unity
- Summer/Winter Coding
- fabrik ik
- 최대값과 최솟값
- 프로그래머스
- fruitspuzzle
- 로컬 네트워크 연결
- pcce 기출문제
- 백준
- 프로젝트
- pccp 기출문제
- network model
- 리플렉션 시스템
- Unreal Engine
- timelessadventure
- netmode
- enetrole
- 2022 kakao
- 2019 kakao
- ai controller
- 당구 연습
- Algorithm
- C++
- unrealengine
- 코딩테스트
Archives
- Today
- Total
LeeTaes 공부노트
[C#] 얕은 복사 vs 깊은 복사 (Shallow Copy vs Deep Copy) 본문
728x90
반응형
얕은 복사 (Shallow Copy)
얕은 복사는 객체의 참조(주소값)만 복사하는 것을 의미합니다.
즉, A객체를 B객체에 복사하였을 때 B객체의 주소는 A객체의 주소와 동일하다는 의미입니다.
class A
{
public A(int x, int y)
{
this.x = x;
this.y = y;
}
public int x;
public int y;
}
위와 같은 클래스가 있다고 가정하고, 얕은 복사로 복제해보도록 하겠습니다.
A inst1 = new A(10, 10);
A inst2 = inst1;
inst1과 inst2는 같은 주소를 참조하게 되며, inst1의 멤버 변수의 값을 수정하면 inst2의 멤버 변수의 값 또한 동일한 값으로 수정되게 됩니다.
위와 같이 얕은 복사는 복사하려는 원본에 대한 새로운 객체를 생성하는데, 생성된 객체는 원본 객체를 참조한다고 정리할 수 있습니다.
깊은 복사(Deep Copy)
깊은 복사는 객체를 완전히 복사합니다.
즉, 내부의 데이터 값들을 모조리 복사하여 원본 객체로부터 완전히 독립적인 객체를 생성하는 방식의 복사입니다.
위와 동일한 클래스에 깊은 복사를 위한 함수를 추가로 구현해주도록 하겠습니다.
class A
{
public A(int x, int y)
{
this.x = x;
this.y = y;
}
public int x;
public int y;
public A DeepCopy()
{
A instance = new A(x, y);
return instance;
}
}
DeepCopy() 함수를 통해 복사해보면?
A inst1 = new A(10, 10);
A inst2 = inst1.DeepCopy();
inst2.y = 100;
Console.WriteLine(inst1.y);
Console.WriteLine(inst2.y);
다음과 같이 서로 독립적으로 동작하게 되는 것을 확인해볼 수 있습니다.
728x90
반응형
'Game Programming > C#' 카테고리의 다른 글
[C#] LINQ(Language Integrated Query) (0) | 2024.06.30 |
---|---|
[C#] 람다식 (0) | 2024.06.30 |
[C#] 의존성 주입(DI, Dependency Injection) (0) | 2024.06.29 |
[C#] as, is (0) | 2024.06.25 |
[C#] Delegate (0) | 2024.06.25 |