2.3.7 참조 타입 대 값 타입
참조 타입과 값 타입의 차이는 타입이 메모리에 저장되는 방식과 꽤 관련이 있다. 간단히 말해 값 타입의 실제 변수 값은 호출 스택에 저장되는 반면, 참조 타입은 힙에 저장되고, 실제 값에 대한 참조만 호출 스택에 저장된다. 다음은 코드에서 이것이 어떻게 돌아가는지 보여주는 간단한 예이다.
int result = 5; → 원시 값 타입 var builder = new StringBuilder(); → 참조 타입 var date = new DateTime(1984, 10, 9); → 모든 구조체가 값 타입이다. string formula = "2 + 2 = "; → 원시 참조 타입 builder.Append(formula); builder.Append(result); builder.Append(date.ToString()); Console.WriteLine(builder.ToString()); → 말도 안 되는 수식을 출력한다.
자바에는 int와 같은 원시적인 것을 제외하고는 값 타입이 없다. 추가적으로 C#은 자신만의 고유한 값 타입을 정의할 수 있다. 참조 타입과 값 타입의 차이를 안다면 올바른 작업에 올바른 타입을 사용할 수 있으므로 좀 더 효율적인 프로그래머가 될 수 있다. 배우는 것도 어렵지 않다.