Partial (Visual Basic)
指出類別或結構宣告是類別或結構的部分定義。
您可以使用 Partial 關鍵字,來分割數個宣告間類別或結構的定義。請視需要在數個不同的原始程式檔 (Source File) 中,使用數個所需要的部分宣告。不過,所有的宣告都必須位於相同的組件 (Assembly) 和命名空間中。
注意事項 |
---|
Visual Basic 支援「部分方法」(Partial Method),這通常在部分類別中實作。如需詳細資訊,請參閱 部分方法 (Visual Basic)和 Sub 陳述式 (Visual Basic)。 |
[ <attrlist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] _
Partial { Class | Structure } name [ (Of typelist) ]
[ Inherits classname ]
[ Implements interfacenames ]
[ variabledeclarations ]
[ proceduredeclarations ]
{ End Class | End Structure }
組件
詞彙 |
定義 |
attrlist |
選擇項。套用至這個類別或結構的屬性 (Attribute) 清單。您必須以角括弧 (< >) 將屬性清單 (Visual Basic)括起來。 |
accessmodifier |
選擇項。指定可存取這個類別或結構的程式碼。請參閱 Visual Basic 中的存取層級。 |
Shadows |
選擇項。請參閱 Shadows (Visual Basic)。 |
MustInherit |
選擇項。請參閱 MustInherit (Visual Basic)。 |
NotInheritable |
選擇項。請參閱 NotInheritable (Visual Basic)。 |
name |
必要項。這個類別或結構的名稱。必須符合在相同類別或結構之所有其他部分宣告中所定義的名稱。 |
Of |
選擇項。指定這是泛型類別或結構。請參閱 Visual Basic 中的泛型型別 (Visual Basic)。 |
typelist |
如果會使用 Of,則此為必要項。請參閱 型別清單 (Visual Basic)。 |
Inherits |
選擇項。請參閱 Inherits 陳述式。 |
classname |
如果會使用 Inherits,則此為必要項。衍生這個類別之來源類別或介面的名稱。 |
Implements |
選擇項。請參閱 Implements 陳述式。 |
interfacenames |
如果會使用 Implements,則此為必要項。此類別或結構所實作的介面名稱。 |
variabledeclarations |
選擇項。宣告類別或結構之其他變數和事件的陳述式 (Statement)。 |
proceduredeclarations |
選擇項。宣告和定義類別或結構之其他程序的陳述式。 |
End Class 或 End Structure |
結束這個部分 Class 或 Structure 定義。 |
備註
Visual Basic 會使用部分類別定義,在不同的原始程式檔中將所產生的程式碼與使用者撰寫的程式碼隔開。例如,[Windows Form 設計工具] 會定義控制項的部分類別 (例如 Form)。您不應該修改這些控制項中所產生的程式碼。
建立部分類別或結構時,會套用可用來建立類別和結構的所有規則 (Rule) (例如,修飾詞 (Modifier) 用法和繼承 (Inheritance) 的規則)。
最佳作法
在一般情況下,您不應該跨兩個或以上的宣告,來分割單一類別或結構的開發。因此,在大部分情況下,並不需要 Partial 關鍵字。
為了增加可讀性,類別或結構的每個部分宣告都應包含 Partial 關鍵字。編譯器 (Compiler) 最多允許一個略過關鍵字的部分宣告,如果有兩個以上的部分宣告略過了關鍵字,編譯器便會發出錯誤的信號。
行為
宣告的等位 :編譯器會將類別或結構視為其所有部分宣告的等位。每個部分定義的每個修飾詞都會套用至整個類別或結構,而每個部分定義的每個成員則可用於整個類別或結構。
在模組中,部分型別不允許型別提升 :如果部分定義是在模組內,則該類別或結構的型別提升會自動失效。在這類情況下,一組部分定義會產生未預期的結果,甚至會產生編譯器錯誤。如需詳細資訊,請參閱 型別提升 (Visual Basic)。
只有在完整路徑名稱 (Fully Qualified Path) 完全相同的情況下,編譯器才會合併部分定義。
Partial 關鍵字可用於以下內容中:
範例
下列範例會將類別 sampleClass 的定義分割成兩個宣告,而每個宣告都會定義不同的 Sub 程序。
Partial Public Class sampleClass
Public Sub sub1()
End Sub
End Class
Partial Public Class sampleClass
Public Sub sub2()
End Sub
End Class
以上範例中的這兩個部分定義可位於相同的原始程式檔中,或位於兩個不同的原始程式檔中。