참조 타입과 값 타입 CLR은 참조 타입(Reference Type)와 값 타입(Value Type)이라는 두 종류의 타입 체계를 지원한다. 참조 타입은 항상 관리되는 힙에 할당된다. 따라서 참조 타입을 사용할 때 마다 메모리의 할당이 발생하는데, 모든 타입이 참조 타입이라면 엄청난 성능 저하가 있을 것이다. 따라서 성능 향상을 목적으로, 단순하고 자주 사용되는 타입들을 위하여 경량화된 값 타입이 존재한다. 값 타입의 인스턴스는 그 자체가 하나의 필드이며 필드를 얻어내기 위해 역추적을 할 필요가 없고 GC의 관리 대상또한 아니다. C#에서 모든 클래스는 참조 타입이며 모든 구조체, 열거 타입은 값 타입니다. (System.Int32등도 구조체이다.) 모든 구조체 타입은 System.ValueType 추상..