다음 표에서는 C# 기본 제공 값 형식을 나열합니다.
다음 표에서는 C# 기본 제공 참조 형식을 나열합니다.
| C# 형식 키워드 | .NET 형식 |
|---|---|
object |
System.Object |
string |
System.String |
delegate |
System.Delegate |
dynamic |
System.Object |
앞의 표에서 왼쪽 열의 대부분의 C# 형식 키워드는 해당 .NET 형식에 대한 별칭입니다. 서로 교환할 수 있습니다. 예를 들어 다음 선언은 동일한 형식의 변수를 선언합니다.
int a = 123;
System.Int32 b = 123;
dynamic 형식은 object비슷합니다. 주요 차이점은 다음과 같습니다.
-
dynamic식에 대한 작업은 컴파일 시간이 아니라 런타임에 바인딩됩니다. -
new dynamic()사용할 수 없습니다. -
dynamic형식에서 형식을 파생시킬 수 없습니다.
키 delegate 워드는 파생된 형식을 선언하는 기본 제공 참조 형식 System.Delegate키워드입니다. 다른 기본 제공 형식 키워드와 delegate 달리 특정 .NET 형식의 별칭은 아닙니다. 대신 추상 System.Delegate 형식에서 파생되는 사용자 지정 형식을 선언합니다. 마찬가지로 dynamic 특정 .NET 형식에 대한 직접 별칭이 아닌 런타임 바인딩 동작을 나타냅니다.
void 키워드는 형식이 없음을 나타냅니다. 값을 반환하지 않는 메서드의 반환 형식으로 사용합니다.
C# 언어에는 System.Span<T> 및 System.ReadOnlySpan<T> 형식에 대한 특수한 규칙이 포함되어 있습니다. 이러한 형식에 해당하는 C# 키워드가 없으므로 이러한 형식은 기본 제공 형식으로 분류되지 않습니다. C# 언어는 배열 형식과 문자열 형식에서 Span<T> 및 ReadOnlySpan<T>암시적 변환을 정의합니다. 이러한 변환은 Span 형식을 보다 자연스러운 프로그래밍 시나리오에 통합합니다. 다음의 변환은 암시적 범위 변환로 정의됩니다.
- 요소 형식이
E부터System.Span<E>까지인 모든 1차원 배열에서 - 요소 형식이
E인 1차원 배열에서System.ReadOnlySpan<U>로의 변환에서,E가U로 공변성 변환 또는 동일 변환을 가질 때 -
System.Span<E>부터System.ReadOnlySpan<U>까지,E가U로 공변 변환 또는 동일 변환을 가질 때 -
System.ReadOnlySpan<E>부터System.ReadOnlySpan<U>까지,E가U로 공변 변환 또는 동일 변환을 가질 때 -
string부터System.ReadOnlySpan<char>까지
컴파일러는 적용 가능한 암시적 범위 변환 있는 사용자 정의 변환을 무시하지 않습니다. 암시적 범위 변환은 확장 멤버의 수신기 매개 변수에 적용할 수 있습니다. 수신기 매개 변수는 확장 멤버의 extension 키워드에 의해 지정됩니다. 수신기 매개 변수는 한정자를 사용하는 this 확장 메서드의 첫 번째 매개 변수입니다. 암시적 범위 변환은 메서드 그룹 변환에 고려되지 않습니다.
참고
- 프레임워크 형식 이름(스타일 규칙 IDE0049) 대신 언어 키워드 사용
- C# 형식의 기본값
.NET