次の表に、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への共分散変換または ID 変換がある場合) -
System.Span<E>からSystem.ReadOnlySpan<U>への移行の際に、EがUへ共変変換または同一性変換を持つ場合 -
System.ReadOnlySpan<E>からSystem.ReadOnlySpan<U>への移行の際に、EがUへ共変変換または同一性変換を持つ場合 -
stringからSystem.ReadOnlySpan<char>へ
コンパイラは、適用可能な 暗黙的なスパン変換 が存在する場合、ユーザー定義の変換を無視しません。 暗黙的なスパン変換は、 拡張メンバーの受信側パラメーターに適用できます。 受信側パラメーターは、拡張メンバーの extension キーワードによって指定されます。 受信側パラメーターは、 this 修飾子を使用する拡張メソッドの最初のパラメーターです。 暗黙的なスパン変換は、メソッド グループ変換では考慮されません。
関連項目
.NET