Partial (Visual Basic)

更新 : 2007 年 11 月

クラスまたは構造体の宣言が、クラスまたは構造体の部分定義であることを示します。

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

yfzd5350.alert_note(ja-jp,VS.90).gifメモ :

Visual Basic 2008 には、部分クラスで使用される部分メソッドが導入されています。詳細については、「部分メソッド」および「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
    省略可能です。このクラスまたは構造体に適用される属性の一覧を指定します。属性リスト は、山かっこ (< >) で囲む必要があります。

  • accessmodifier
    省略可能です。どのようなコードからこのクラスまたは構造体にアクセスできるのかを指定します。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 の部分定義を終了します。

解説

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

修飾子の利用法と継承など、クラスおよび構造体の作成に関するすべての規則は、部分クラスや部分構造体を作成するときに適用されます。

最適な使用方法

  • 通常の状況では、単独のクラスまたは構造体の開発を、複数の宣言に分割しないでください。したがって、多くの場合は 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 つの部分定義は、同じソース ファイル内にあっても、別々のソース ファイル内にあってもかまいません。

参照

処理手順

方法 : 部分メソッドを作成する (Visual Basic)

概念

型の上位変換

Visual Basic におけるジェネリック型

部分メソッド

参照

Class ステートメント (Visual Basic)

Structure ステートメント

Shadows