下表列出了 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的類型。
System.Delegate
類型是抽象類型。
void
關鍵詞代表沒有類型。 您可以使用它做為不會傳回值之方法的傳回型別。
C# 語言包含 System.Span<T> 和 System.ReadOnlySpan<T> 類型的特製化規則。 這些類型不會分類為內建類型,因為沒有對應至這些類型的 C# 關鍵詞。 C# 語言會定義從陣列類型和字串類型到 Span<T>
和 ReadOnlySpan<T>
的隱含轉換。 這些轉換會將 Span
類型整合到更自然的程序設計案例中。 下列轉換定義為 隱含範圍轉換:
- 從任何元素類型為
E
的單一維度陣列轉換到元素類型為System.Span<E>
- 當
E
具有共變轉換或同一性轉換至U
時,任何元素類型為E
到System.ReadOnlySpan<U>
的單一維度陣列均可應用此轉換。 - 從
System.Span<E>
到System.ReadOnlySpan<U>
時,當E
具有共變數轉換或識別轉換成U
- 從
System.ReadOnlySpan<E>
到System.ReadOnlySpan<U>
,當E
具有共變量轉換或恆等轉換為U
的能力時 - 從
string
到System.ReadOnlySpan<char>
編譯程式絕不會忽略任何使用者定義的轉換,其中適用的 隱含範圍轉換 存在。 隱含範圍轉換可以套用至 擴充方法的第一個參數,也就是具有 this
修飾詞的參數。 方法群組轉換不會考慮隱含範圍轉換。