Partial (Visual Basic)

型宣言が、型の部分定義であることを示します。

Partial キーワードを使用して、型の定義を複数の宣言に分割できます。 部分宣言は必要に応じていくつでも使用でき、複数のソース ファイルとして作成することもできます。 ただし、すべての宣言は同じアセンブリおよび同じ名前空間にある必要があります。

注意

Visual Basic では、部分メソッドをサポートしています。このメソッドは通常、部分クラスに実装されています。 詳細については、「部分メソッド」および「Sub ステートメント」を参照してください。

構文

[ <attrlist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] _  
Partial { Class | Structure | Interface | Module } name [ (Of typelist) ]  
    [ Inherits classname ]  
    [ Implements interfacenames ]  
    [ variabledeclarations ]  
    [ proceduredeclarations ]  
{ End Class | End Structure }  

指定項目

用語 定義
attrlist 任意。 この型に適用される属性の一覧です。 属性リストは山かっこ (< >) で囲む必要があります。
accessmodifier 任意。 どのようなコードから型にアクセスできるのかを指定します。 「 Access levels in Visual Basic」を参照してください。
Shadows 任意。 「Shadows」を参照してください。
MustInherit 任意。 「MustInherit」を参照してください。
NotInheritable 任意。 「NotInheritable」を参照してください。
name 必須です。 この型の名前です。 同じ型の他のすべての部分宣言で定義されている名前と一致する必要があります。
Of 任意。 これがジェネリック型であることを指定します。 「Visual Basic におけるジェネリック型」を参照してください。
typelist Of を使用する場合は必ず指定します。 「型リスト」を参照してください。
Inherits 任意。 「Inherits ステートメント」を参照してください。
classname Inherits を使用する場合は必ず指定します。 このクラスの派生元のクラスまたはインターフェイスの名前です。
Implements 任意。 「Implements ステートメント」を参照してください。
interfacenames Implements を使用する場合は必ず指定します。 この型が実装するインターフェイスの名前を指定します。
variabledeclarations 任意。 この型の追加の変数やイベントを宣言するステートメントです。
proceduredeclarations 任意。 この型の追加のプロシージャを宣言および定義するステートメントです。
End Class または End Structure この Class または Structure の部分定義を終了します。

Remarks

Visual Basic では、部分クラス定義を使用して、生成されたコードとユーザーが作成したコードとを別々のソース ファイルに分離します。 たとえば、Windows フォーム デザイナーでは、Form などのコントロールに部分クラスを定義します。 これらのコントロールでは、生成されたコードを変更しないでください。

部分型を作成する際、クラス、構造体、インターフェイス、およびモジュールの作成に関するすべての規則 (修飾子の利用法や継承に関する規則など) が適用されます。

ベスト プラクティス

  • 通常の状況では、1 つの型の開発を複数の宣言に分割しないようにします。 したがって、ほとんどの場合は、Partial キーワードは必要ありません。

  • 読みやすくするために、型の部分宣言にはすべて、Partial キーワードを含めます。 コンパイラでは、最大 1 つの部分宣言でキーワードを省略できますが、複数の部分宣言で省略するとエラーになります。

動作

  • 宣言の共用体。 コンパイラは型を、すべての部分宣言の共用体として扱います。 すべての部分定義で使用されているすべての修飾子は、型全体に適用され、すべての部分定義のすべてのメンバーは、型全体で使用できます。

  • モジュール内の部分型は上位変換できません。 部分定義がモジュール内にある場合、その型の上位変換は自動的に失敗します。 この場合、一連の部分定義によって、予期しない結果になったり、場合によってはコンパイラ エラーが発生することがあります。 詳細については、「型の上位変換」を参照してください。

    コンパイラは、完全修飾されたパスがまったく同じ場合にのみ、部分定義をマージします。

キーワード Partial は次のコンテキストで使用できます。

Class ステートメント

Structure ステートメント

次の例では、クラス sampleClass の定義を 2 つの宣言に分割し、それぞれ別の Sub プロシージャを定義します。

Partial Public Class sampleClass
    Public Sub sub1()
    End Sub
End Class
Partial Public Class sampleClass
    Public Sub sub2()
    End Sub
End Class

この例にある 2 つの部分定義は、同じソース ファイル内にあっても、別々のソース ファイル内にあってもかまいません。

関連項目