이 예제에서는 대리자를 사용하여 프로시저를 다른 프로시저에 전달하는 방법을 보여 줍니다.
대리자는 Visual Basic의 다른 형식과 마찬가지로 사용할 수 있는 형식입니다.
AddressOf 프로시저 이름에 적용된 경우 연산자는 대리자 개체를 반환합니다.
이 예제에는 연산자 AddressOf를 사용하여 얻은 다른 프로시저를 참조할 수 있는 대리자 매개 변수가 있는 프로시저가 있습니다.
대리자와 매칭 절차 만들기
라는 대리자를 만듭니다
MathOperator.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As DoubleAddNumbers와 매개 변수 및 반환 값이 일치하는 프로시저MathOperator를 만들어 서명이 일치하도록 합니다.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End FunctionSubtractNumbers이라는 이름으로MathOperator에 일치하는 시그니처를 가진 프로시저를 만드세요.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End Function대리자를 매개 변수로 사용하는 프로시저를
DelegateTest만듭니다.이 프로시저는
AddNumbers또는SubtractNumbers에 대한 참조를 수락할 수 있습니다. 왜냐하면 이들의 서명이MathOperator의 서명과 일치하기 때문입니다.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라는 프로시저를 만들어서, 매개 변수로DelegateTest에 대한 대리자를 사용하여AddNumbers을 한 번 호출하고, 매개 변수로SubtractNumbers에 대한 대리자를 사용하여 다시 호출합니다.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubTest가 호출되면,AddNumbers와5에3가 적용된 결과인 8을 먼저 표시합니다. 그런 다음SubtractNumbers가9및3에 작용한 결과가 표시됩니다, 결과는 6입니다.
참고하십시오
.NET