共用方式為


型別定義

更新:2007 年 11 月

您可以根據現有型別來定義新的型別。內建實值型別、指標、陣列和委派都是在使用時定義的,稱為隱含型別 (Implicit Type)。型別也可以是巢狀;也就是說,型別可以是另一個型別的成員。

型別定義包括:

  • 在型別上定義的任何屬性 (Attribute)

  • 型別的可視性

  • 型別的名稱

  • 型別的基底型別

  • 由型別實作的任何介面

  • 型別中每一個成員的定義

屬性

屬性提供了其他的使用者定義中繼資料。屬性幾乎可套用於任何語言項目,像是型別、屬性、方法等。

型別存取範圍

所有型別都具有存取範圍修飾詞 (Modifier),負責控制其他型別的存取範圍。下表說明執行階段所支援的型別存取範圍。

存取範圍

說明

public

型別可供所有組件存取

assembly

型別只能在組件中存取

巢狀型別的存取範圍是依據其存取範圍定義域,由成員的宣告存取範圍和立即包含型別的存取範圍定義域來決定。但是,巢狀型別的存取範圍領域不能超過包含型別 (Containing Type) 的存取範圍領域。

在程式 P 的型別 T 中宣告的巢狀成員 M,它的存取範圍領域定義如下 (請注意,M 本身也可能是型別):

  • 如果 M 的宣告存取範圍是 publicM 的存取範圍領域就是 T 的存取範圍領域。

  • 如果 M 的宣告存取範圍是 protected internalM 的存取範圍領域是 T 的存取範圍領域與 P 的程式文字和從 P 以外宣告的 T 所衍生任何型別的程式文字的交集。

  • 如果 M 的宣告存取範圍是 protectedM 的存取範圍領域是 T 的存取範圍領域與 T 和任何衍生自 T 的型別的程式文字的交集。

  • 如果 M 的宣告存取範圍是 internalM 的存取範圍領域是 T 的存取範圍領域與 P 的程式文字的交集。

  • 如果 M 的宣告存取範圍是 privateM 的存取範圍領域是 T 的程式文字。

型別名稱

一般型別系統對於名稱只有兩項限制:

  1. 所有名稱都是以 Unicode (16 位元) 字元字串的方式編碼。

  2. 名稱的內嵌 (16 位元) 值不允許為 0x0000。

所有比較都是以位元組為基礎,因此會區分大小寫,而且與地區無關 (Locale-Independent)。

雖然型別可能會參考其他模組和組件中的型別,但是型別是在一個模組中完整定義的。只有在組件中的型別名稱才必須是唯一的。若要能完整辨認型別,必須以包含型別實作的組件來限定型別名稱。如需詳細資訊,請參閱指定完整型別名稱

基底型別和介面

型別可繼承其他型別的數值和行為。一般型別系統不允許型別繼承一個以上的基底型別。

型別可實作任意數目的介面。若要實作介面,型別必須實作該介面的所有虛擬成員。虛擬方法可由衍生型別 (Derived Type) 實作,並且可以用靜態或動態方式叫用 (Invoke)。如需虛擬成員的詳細資訊,請參閱型別成員。如需繼承和介面的詳細資訊,請參閱類別介面

型別成員

型別的行為和狀態是由下列型別成員來定義:事件、欄位、巢狀型別、方法和屬性。如需詳細資訊,請參閱型別成員

請參閱

概念

型別成員

其他資源

一般型別系統

Common Language Runtime 中的組件

使用屬性擴充中繼資料