더북(TheBook)

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#은 자신만의 고유한 값 타입을 정의할 수 있다. 참조 타입과 값 타입의 차이를 안다면 올바른 작업에 올바른 타입을 사용할 수 있으므로 좀 더 효율적인 프로그래머가 될 수 있다. 배우는 것도 어렵지 않다.

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