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