Partial (Visual Basic)
クラスまたは構造体の宣言が、クラスまたは構造体の部分定義であることを示します。
Partial キーワードを使用すると、クラスまたは構造体の定義は、複数の宣言に分割できます。部分宣言は必要に応じていくつでも使用でき、複数のソース ファイルとして作成することもできます。しかし、すべての宣言は同じアセンブリと同じ名前空間内にある必要があります。
[!メモ]
Visual Basic は部分メソッドをサポートします。これは、通常は部分クラスに実装されます。詳細については、「部分メソッド (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 |
省略可能です。このクラスまたは構造体に適用される属性の一覧を指定します。属性リスト (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 |
省略可能です。クラスまたは構造体の、追加の変数やイベントを宣言するステートメントです。 |
proceduredeclarations |
省略可能です。クラスまたは構造体の、追加のプロシージャを宣言および定義するステートメントです。 |
End Class または End Structure |
この Class または Structure の部分定義を終了します。 |
解説
Visual Basic は部分クラスの定義を使用して、生成されたコードとユーザーが作成したコードを、別々のソース ファイルに分割します。たとえば、Windows フォーム デザイナーは、Form などのコントロールに部分クラスを定義します。これらのコントロールでは、生成されたコードを変更しないでください。
修飾子の利用法と継承など、クラスおよび構造体の作成に関するすべての規則は、部分クラスや部分構造体を作成するときに適用されます。
ベスト プラクティス
通常の状況では、単独のクラスまたは構造体の開発を、複数の宣言に分割しないでください。したがって、多くの場合は Partial キーワードは必要ありません。
読みやすさのために、クラスまたは構造体の部分宣言にはすべて Partial キーワードを含めます。コンパイラでは、1 つの部分宣言でこのキーワードを省略してもエラーになりませんが、複数省略するとエラーになります。
[動作]
宣言の共用体コンパイラは、クラスまたは構造体を、部分宣言の共用体として扱います。すべての部分定義で使用されているすべての修飾子は、クラスまたは構造体全体に適用され、すべての部分定義のすべてのメンバーは、クラスまたは構造体全体で利用可能です。
モジュール内の部分型は上位変換不可能部分定義がモジュール内にある場合、そのクラスまたは構造体の型の上位変換は自動的に失敗します。この場合、一連の部分定義によって、予期しない結果になったり、場合によってはコンパイラ エラーが発生することがあります。詳細については、「型の上位変換 (Visual Basic)」を参照してください。
コンパイラは、完全修飾されたパスがまったく同じ場合にのみ、部分定義をマージします。
キーワード Partial は、次の構文で使用します。
使用例
次の例では、クラス 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 つの部分定義は、同じソース ファイル内にあっても、別々のソース ファイル内にあってもかまいません。