共用方式為


內建類型 (C# 參考)

下表列出了 C# 預設內建的 類型:

C# 類型關鍵詞 .NET 類型
bool System.Boolean
byte System.Byte
sbyte System.SByte
char System.Char
decimal System.Decimal
double System.Double
float System.Single
int System.Int32
uint System.UInt32
nint System.IntPtr
nuint System.UIntPtr
long System.Int64
ulong System.UInt64
short System.Int16
ushort System.UInt16

下表列出 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>
  • E 具有共變轉換或同一性轉換至 System.ReadOnlySpan<U> 時,任何元素類型為 EU的單一維度陣列均可應用此轉換。
  • System.Span<E>System.ReadOnlySpan<U>時,當 E 具有共變數轉換或識別轉換成 U
  • System.ReadOnlySpan<E>System.ReadOnlySpan<U>時,當 E 具有共變數轉換或識別轉換成 U
  • stringSystem.ReadOnlySpan<char>

編譯程式絕不會忽略任何使用者定義的轉換,其中適用的 隱含範圍轉換 存在。 隱含的張距轉換可套用於 擴展成員的接收參數。 接收參數由 extension 擴充成員中的關鍵字指定。 接收參數是使用 this 修飾符的擴展方法的第一個參數。 方法群組轉換不會考慮隱含範圍轉換。

另請參閱