次の方法で共有


Partial メソッド (Visual Basic)

部分メソッドを使用すると、開発者はカスタム ロジックをコードに挿入できます。 通常、コードはデザイナーによって生成されたクラスの一部です。 部分メソッドは、コード ジェネレーターによって作成される部分クラスで定義され、一般的に何かが変更されたことを通知するために使用されます。 開発者は、変更に応じてカスタム動作を指定できます。

コード ジェネレーターのデザイナーは、メソッド シグネチャとメソッドの 1 つ以上の呼び出しのみを定義します。 開発者は、生成されたコードの動作をカスタマイズする場合に、メソッドの実装を提供できます。 実装が指定されていない場合、メソッドの呼び出しはコンパイラによって削除され、追加のパフォーマンス オーバーヘッドは発生しません。

申告

生成されたコードは、シグネチャ行の先頭にキーワード Partial を配置することで、部分メソッドの定義をマークします。

Partial Private Sub QuantityChanged()  
End Sub  

定義は次の条件を満たしている必要があります。

  • メソッドは、Functionではなく、Subである必要があります。

  • メソッドの本体は空のままにする必要があります。

  • アクセス修飾子は Privateする必要があります。

実装

実装は、主に部分メソッドの本体を埋める処理で構成されます。 実装は通常、定義とは別の部分クラス内にあり、生成されたコードを拡張する開発者によって記述されます。

Private Sub QuantityChanged()  
'    Code for executing the desired action.  
End Sub  

前の例では、宣言内の署名を正確に複製していますが、バリエーションが可能です。 特に、 OverloadsOverridesなど、他の修飾子を追加できます。 使用できる Overrides 修飾子は 1 つだけです。 メソッド修飾子の詳細については、「 Sub ステートメント」を参照してください。

用途

その他の Sub プロシージャを呼び出すのと同様に、部分メソッドを呼び出します。 メソッドが実装されている場合は、引数が評価され、メソッドの本体が実行されます。 ただし、部分メソッドの実装は省略可能です。 メソッドが実装されていない場合、メソッドの呼び出しは無効になり、メソッドに引数として渡される式は評価されません。

Product.Designer.vbという名前のファイルで、Quantity プロパティを持つProduct クラスを定義します。

Partial Class Product

    Private _Quantity As Integer

    Property Quantity() As Integer
        Get
            Return _Quantity
        End Get
        Set(ByVal value As Integer)
            _Quantity = value
            QuantityChanged()
        End Set
    End Property

    ' Provide a signature for the partial method.
    Partial Private Sub QuantityChanged()
    End Sub
End Class

Product.vbという名前のファイルで、 QuantityChangedの実装を指定します。

Partial Class Product

    Private Sub QuantityChanged()
        MsgBox("Quantity was changed to " & Me.Quantity)
    End Sub

End Class

最後に、プロジェクトの Main メソッドで、 Product インスタンスを宣言し、その Quantity プロパティの初期値を指定します。

Module Module1

    Sub Main()
        Dim product1 As New Product With {.Quantity = 100}
    End Sub

End Module

次のメッセージを表示するメッセージ ボックスが表示されます。

Quantity was changed to 100

こちらも参照ください