값 타입을 보면 a = b;를 실행한 시점에 a와 b의 값은 1이다. 그다음 b = 11;을 실행하면 b의 값은 11이 되지만 a의 값은 여전히 1이다.
값 타입에서는 a = b; 이후 b를 수정했을 때 a에 b의 수정사항이 반영되지 않는다.
값 타입 변수에 값을 할당하면 값의 참조가 아니라 값의 사본이 할당되기 때문이다.
참조 타입은 값(실체)으로 향하는 참조를 저장하기 때문에 위 그림에서 b = 11;이후 a와 b 모두 11 임을 확인할 수 있다.
- a = b;를 실행 했을 때 a에 b의 참조가 저장된다. 그래서 a도 b와 마찬가지로 참조 1002가 되어 값이 1이 된다.
(참조 1001은 아무도 가리키지 않는 오브젝트 이기 때문에 존재하지 않는 것과 마찬가지다.) - b = 11;을 실행하여 참조 1002의 값을 11로 수정했다. 그래서 b의 값이 11이 되었다.
- a도 참조 1002이기 때문에 b와 마찬가지로 값이 11이 된다.
결론: 값 타입 변수는 값 자체를 저장하고, 참조 변수는 값(실체)으로 향하는 참조값을 저장한다.
'프로그래밍 > Unity' 카테고리의 다른 글
[Unity] C# 클래스 메소드(in,out,ref) (1) | 2020.10.21 |
---|