공용 타입 시스템이란? in C#

JS·2023년 2월 4일
0

C#

목록 보기
7/9
post-thumbnail

공용 타입 시스템(CTS; Common Type System)이란?

.NET 에서는 여러 .NET 언어를 지원하기 위해 공용 타입 시스템을 지원합니다. CPU가 데이터를 사용하기 위해서는 데이터의 주소와 크기를 알아야 하는데, 공용 타입 시스템은 이러한 데이터들이 어떻게 컴퓨터 메모리에 표현되는지를 규정한 규칙이다

.NET 에서의 모든 타입은 값 타입(Value Type) 혹은 참조 타입(Reference Type)으로 구분되며 모든 타입은 기본 System.Object에서 파생된다

값 타입(Value Type)이란?

C# 에서의 값 타입은 Primitive Types / Enum / Struct 로 구성되어있다

값 타입은 다음과 같은 특징을 가진다

변수가 값을 담는 데이터 형식
값 형식과 관련이 있는 것은 스택 메모리 영역
구조체를 제외한 모든 타입은 System.ValueType에서 파생된다
스택 메모리에 직접 값이 포함된다(복사가 일어난다는 의미)
상속이 불가능하다
Struct 멤버 중 참조 타입이 있다면 메모리 주소가 복사되는데, 이를 얕은 복사(Shallow Copy)라고 하며 반대는 깊은 복사(Deep Copy)라고 한다

참조 타입(Reference Type)이란?

C# 에서의 참조 타입은 class / delegate / array / interface, 그리고 기본적으로 object / string / dynamic 타입을 제공한다

참조 타입은 다음과 같은 특징을 가진다

변수가 값 대신 값이 있는 곳의 위치(참조)를 담는 데이터 형식
참조 타입을 사용하기 위해서는 new 키워드를 통해 객체를 초기화한 후 힙에 할당된 메모리를 스택 공간에서 참조해야 한다
힙 메모리에 인스턴스가 할당된다
널(Null)을 할당할 수 있다

Value Type과 Reference Type의 차이점

값 유형은 자체 메모리 공간 내에 데이터 값을 보유하는 반면, 참조 타입은 데이터를 가지고 있는 다른 메모리 위치에 대한 포인터를 보유한다는 큰 차이점이 있다


Reference

profile
게임 프로그래머 지망생

0개의 댓글