방법: Visual Basic에서 프로시저에 다른 프로시저 전달
이 예제에서는 대리자를 사용하여 프로시저를 다른 프로시저에 전달하는 방법을 보여 줍니다.
대리자는 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 Function
MathOperator
와 일치하는 서명을 사용하여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 Sub
AddNumbers
에 대한 대리자를 매개 변수로 사용하여DelegateTest
를 한 번 호출하고SubtractNumbers
에 대한 대리자를 매개 변수로 사용하여 한 번 호출하는Test
이라는 프로시저를 만듭니다.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End Sub
Test
이 호출되면 먼저 8인5
및3
에서AddNumbers
동작의 결과를 표시합니다. 그런 다음9
및3
에 대해SubtractNumbers
동작의 결과가 표시됩니다(6).
참고 항목
.NET