
C#의 데이터 타입은 크게 값 타입(Value Type)과 참조 타입(Reference Type)으로 나뉜다.
값 타입은 데이터를 직접 저장하는 타입이고, 스택 메모리에 할당된다.
메모리 주소가 아닌 실제 값을 복사해서 크기가 크면 복사 비용이 증가할 수 있다.
값 타입으로는 int, float, double, bool, char, struct, enum 등이 있다.
값 타입 예시
참조타입은 데이터가 저장된 메모리 주소를 참조하는 타입이고, 힙 메모리에 할당된다.
변수를 복사해도 같은 객체를 참조하므로 하나가 변경되면 다른 변수도 영향을 받게된다.
참조 타입으로는 string, object, class 등이 있다.
참조 타입 예시
값 타입을 참조 타입으로 변환하거나,
참조 타입을 값 타입으로 변환하는 과정을
박싱(Boxing)과 언박싱(Unboxing)이라고 한다.