Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo esempio viene illustrato come usare i delegati per passare una routine a un'altra routine.
Un delegato è un tipo che è possibile usare come qualsiasi altro tipo in Visual Basic. L'operatore AddressOf restituisce un oggetto delegato quando viene applicato a un nome di routine.
In questo esempio è presente una routine con un parametro delegato che può accettare un riferimento a un'altra routine, ottenuta con l'operatore AddressOf .
Creare il delegato e le procedure di corrispondenza
Creare un delegato denominato
MathOperator.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As DoubleCreare una routine denominata
AddNumberscon i parametri e il valore restituito corrispondenti a quelli diMathOperator, in modo che le firme corrispondano.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End FunctionCreare una routine denominata
SubtractNumberscon una firma corrispondente aMathOperator.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End FunctionCreare una routine denominata
DelegateTestche accetta un delegato come parametro.Questa procedura può accettare un riferimento a
AddNumbersoSubtractNumbers, perché le firme corrispondono allaMathOperatorfirma.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 SubCreare una routine denominata
Testche chiamaDelegateTestuna volta con il delegato perAddNumberscome parametro e di nuovo con il delegato perSubtractNumberscome parametro.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubQuando
Testviene chiamato, visualizza prima il risultato dell'azioneAddNumberssu5e3, ovvero 8. Il risultato dell'azione diSubtractNumbersche agisce su9e3viene visualizzato, che è 6.