더북(TheBook)

이 프로그램은 콘솔에 무엇을 출력할까? ab에 할당하면 런타임이 a의 새로운 복사본을 생성한다. 즉, b를 수정할 때 a가 아닌 a 값으로 생성된 새로운 구조체를 수정하는 것이다. 만약 Point가 클래스라면? 그러면 ba와 동일한 참조를 가질 것이고, a 내용을 변경하는 것은 b를 동시에 변경하는 것을 의미할 것이다.

값 타입은 스토리지와 성능에서 참조 타입보다 효율적이기 때문에 존재한다. 이미 앞에서 참조보다 크기가 작은 데이터 타입을 값으로 전달하는 데 효율적인 방법에 대해 이야기했다. 참조 타입은 한 단계 우회적인 부분이 있다. 참조 타입의 필드에 접근할 때 항상 .NET 런타임은 먼저 참조 값을 읽은 다음 참조가 가리키는 주소로 이동한 후 거기서 실제 값을 읽어야 한다. 값 타입의 경우 런타임이 그 값을 직접 읽기 때문에 액세스 속도가 빨라진다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.