C#은 강력한 형식의 언어로 모든 변수와 상수 및 메서드 시그니처의 입력 매개변수와 반환 값 등의 형식을 지정해야 합니다.
형식은 분류 방법에 따라 기본 형식과 사용자 정의 형식으로 나눌 수도 있으며 값 형식, 참조 형식, 포인터 형식으로 구분할 수도 있습니다.
기본 형식에는 true와 false를 값으로 가질 수 있는 bool 형식과 유니코드 문자를 표현하기 위한 char 형식, 정수와 실수를 표현하기 위한 여러 가지 형식과 문자열을 위해 string과 모든 형식의 기반 형식인 object를 제공하고 있습니다. 기본 형식으로 제공되는 형식 중에 string과 object는 참조 형식이며 나머지 형식들은 모두 value 형식입니다.
C# 형식 | .NET Framework형식 | 설명 및 표현 범위 |
bool | System.Boolean | 논리 값을 표현 (true 혹은 false) |
byte | System.Byte | 부호 없는 8비트 정수(0~255) |
sbyte | System.SByte | 부호 있는 8비트 정수(-128~127) |
char | System.Char | 유니코드 16비트 문자 |
decimal | System.Decimal | 128비트 데이터 형식 |
double | System.Double | 7개의 자릿수를 갖는 실수 (근사치) |
float | System.Single | 15~16개의 자릿수를 갖는 실수(근사치) |
int | System.Int32 | 부호 있는 32비트 정수 |
uint | System.UInt32 | 부호 없는 32비트 정수 |
long | System.Int64 | 부호 있는 64비트 정수 |
ulong | System.UInt64 | 부호 없는 64비트 정수 |
object | System.Object | 모든 형식의 기반 형식 |
short | System.Int16 | 부호 있는 16비트 정수 |
ushort | System.UInt16 | 부호 없는 16비트 정수 |
string | System.String | 0개 이상의 유니코드 문자로 구성된 시퀀스 |
C#에서는 기본 형식외에 필요한 형식을 정의하여 사용할 수 있습니다. 사용자 정의 형식은 표현할 수 있는 값의 종류를 정의하는 열거형과 여러가지 멤버를 캡슐화할 수 있는 구조체와 클래스 등이 있습니다.
C#의 형식은 값 형식과 참조 형식으로 나눌 수 있는데 구조체와 열거형은 값 형식이고 클래스는 참조 형식입니다. C#에서 값 형식들은 변수들이 독립적으로 사용됩니다. 이에 반해 참조 형식은 변수들이 관리화 힙에 할당된 개체를 참조하여 사용되므로 하나의 개체를 사용하는 여러 개의 변수가 있을 수 있습니다. 그리고 참조 형식의 개체는 관리화 힙에 할당되어 .NET에 의해 생명 주기를 관리되어 형식 안정성을 제공합니다.