この例では、デリゲートを使用してプロシージャを別のプロシージャに渡す方法を示します。
デリゲートは、Visual Basic の他の型と同様に使用できる型です。
AddressOf演算子は、プロシージャ名に適用されるとデリゲート オブジェクトを返します。
この例には、 AddressOf 演算子で取得した別のプロシージャへの参照を受け取ることができるデリゲート パラメーターを持つプロシージャがあります。
デリゲートを作成し、それに対応するプロシージャを設定する
MathOperatorという名前のデリゲートを作成します。Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As Doubleシグネチャが一致するように、パラメーターと戻り値が
MathOperatorのものと一致するAddNumbersという名前のプロシージャを作成します。Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End FunctionMathOperatorに一致するシグネチャを持つSubtractNumbersという名前のプロシージャを作成します。Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End Functionデリゲートをパラメーターとして受け取る
DelegateTestという名前のプロシージャを作成します。このプロシージャは、署名が
MathOperator署名と一致するため、AddNumbersまたはSubtractNumbersへの参照を受け入れることもできます。Sub DelegateTest( ByVal x As Double, ByVal op As MathOperator, ByVal y As Double ) Dim ret As Double ret = op.Invoke(x, y) ' Call the method. MsgBox(ret) End SubTestという名前のプロシージャを作成し、AddNumbersのデリゲートをパラメーターとして、SubtractNumbersのデリゲートをパラメーターとして使用して、DelegateTestを 1 回呼び出します。Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubTestが呼び出されると、最初に5と3(8) に対して動作AddNumbersの結果が表示されます。 次に、9と3に対して動作するSubtractNumbersの結果が表示されます。これは 6 です。
こちらも参照ください
.NET