• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

딕셔너리 복사에 관한 질문이 있습니다

21.12.15 16:35 작성 조회수 377

0

안녕하세요 루키스님.

개발을 하다 보니 딕셔너리를 복사해 사용해야될 때가 있는데 dictionary<> dict1 = dict2 를 한 뒤 dict1을 수정할 경우 dict2의 내용까지 변경

되는 현상을 겪었습니다. 알아보니 얕은복사, 깊은복사의 개념으로 개념은 어느정도 이해했으나 구현하는 부분은 샘플코드를 봐도 쉽게 이해가

안되네요...

 

혹시 딕셔너리의 깊은복사에 대한 샘플 코드나 예제를 설명해주실 수 있으신가요?

답변 1

답변을 작성해보세요.

1

그냥 참조 타입이 무엇인지 이해를 하시면 됩니다.
C++이나 C를 하셨다면 포인터를 이해하시면 되고요.
참조 타입은 원본을 '참조'하고 있는 상태이고
내부적으로는 원본의 주소값을 들고 있습니다.
dict2를 이용해도 dict1가 바뀌는 이유는,
dict1, dict2 둘다 동일한 원본을 바라보고 있는 상태이기 때문입니다.
C#에서는 class로 만드는 애들이나 List, Dictionary 같은 컨테이너 모두 참조타입입니다.

조재한님의 프로필

조재한

질문자

2021.12.17

감사합니다! 결국 깊은복사(데이터까지 그대로 복제)를 한번에 방법은 찾지 못하고 dict1의 값을 하나씩 꺼내서 dict2에 ADD하는 방법으로 구현하긴 했는데 효율성의 측면에서 옳은 방식인지는 모르겠네요.. :(