Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przykładzie pokazano, jak za pomocą delegatów przekazać procedurę do innej procedury.
Delegat jest typem, którego można użyć jak dowolnego innego typu w Visual Basic. Operator AddressOf zwraca obiekt delegata po zastosowaniu do nazwy procedury.
W tym przykładzie przedstawiono procedurę z parametrem delegowanym, który może odwoływać się do innej procedury uzyskanej z operatorem AddressOf .
Utwórz delegata i dopasowujące procedury
Utwórz delegata o nazwie
MathOperator.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As DoubleUtwórz procedurę o nazwie
AddNumbersz parametrami i zwracaną wartością zgodną z tymi dlaMathOperator, aby podpisy się zgadzały.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End FunctionUtwórz procedurę o nazwie
SubtractNumbersz sygnaturą zgodną zMathOperator.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End FunctionUtwórz procedurę o nazwie
DelegateTest, która przyjmuje delegata jako parametr.Ta procedura może zaakceptować odwołanie do
AddNumberslubSubtractNumbers, ponieważ ich podpisy są zgodne z podpisemMathOperator.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 SubUtwórz procedurę o nazwie
Test, która wywołujeDelegateTestraz z delegatem dlaAddNumbersjako parametrem, a następnie ponownie z delegatem dlaSubtractNumbersjako parametrem.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubGdy
Testjest wywoływana, najpierw wyświetla wynik działaniaAddNumbersna5i3, czyli 8. Następnie zostanie wyświetlony wynik działaniaSubtractNumbersna9i3, który wynosi 6.