C#

C# 얕은 복사, 깊은 복사

KJaebee 2022. 6. 2. 01:13

얕은 복사

얕은 복사란 다른 객체인데 객체의 변수끼리 서로 연결이 되어 값이 둘다 바뀜.

그 이유는 클래스의 구조가 참조 형식이라서 그렇다.

클래스 끼리 대입 연산을 해버리면 참조를 해버리는 것.

이게 얕은 복사(Shallow Copy)이다.

 

깊은 복사

얕은 복사는 목적에 어긋나는 복사 방식이다.

서로의 변수를 공유하니 동일한 클래스에 객체를 복사해 사용할 수 없다.

둘 중에 하나가 바뀌면 둘 다 바뀌어 버림.

 

그래서 깊은 복사(Deep Copy) 라는게 존재

깊은 복사의 원리는

새로운 객체를 만들어서 그 객체와 참조시켜버림.

 

test copy = new test() 새로운 객체를 만들어서

copy.count = this.count; 이 객체의 본 객체의 값을 넣는다.

(this 란 자기 자신을 가리킴)

그럼 이 값만 들어간 객체가 하나 만들어짐.

이 객체의 메모리 주소 공간을 반환 시켜서

copy = data.DeepCopy(); 다른 객체와 연길시켜버리는 것.

 

이것이 깊은 복사의 원리.

'C#' 카테고리의 다른 글

C# 접근 한정자  (0) 2022.06.02
C# this  (0) 2022.06.02
C# 정적 필드, 메소드  (0) 2022.06.01
C# 생성자와 종료자  (0) 2022.06.01
C# 클래스  (0) 2022.06.01