방법: Visual Basic에서 프로시저에 다른 프로시저 전달

이 예제에서는 대리자를 사용하여 프로시저를 다른 프로시저에 전달하는 방법을 보여 줍니다.

대리자는 Visual Basic의 다른 형식과 마찬가지로 사용할 수 있는 형식입니다. AddressOf 연산자는 프로시저 이름에 적용할 때 대리자 개체를 반환합니다.

이 예제에는 AddressOf 연산자를 사용하여 가져온 다른 프로시저를 참조할 수 있는 대리자 매개 변수가 있는 프로시저가 있습니다.

대리자 및 일치 프로시저 만들기

  1. MathOperator(이)라는 대리자를 만듭니다.

    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
    
  2. 서명이 일치할 수 있도록 매개 변수와 MathOperator의 일치하는 반환 값을 사용하여 AddNumbers 프로시저를 만듭니다.

    Function AddNumbers( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
        Return x + y
    End Function
    
  3. MathOperator와 일치하는 서명을 사용하여 SubtractNumbers이라는 프로시저를 만듭니다.

    Function SubtractNumbers( 
        ByVal x As Double, 
        ByVal y As Double
    ) As Double
        Return x - y
    End Function
    
  4. 대리자를 매개 변수로 사용하는 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
    
  5. AddNumbers에 대한 대리자를 매개 변수로 사용하여 DelegateTest를 한 번 호출하고 SubtractNumbers에 대한 대리자를 매개 변수로 사용하여 한 번 호출하는 Test이라는 프로시저를 만듭니다.

    Protected Sub Test()
        DelegateTest(5, AddressOf AddNumbers, 3)
        DelegateTest(9, AddressOf SubtractNumbers, 3)
    End Sub
    

    Test이 호출되면 먼저 8인 53에서 AddNumbers 동작의 결과를 표시합니다. 그런 다음 93에 대해 SubtractNumbers 동작의 결과가 표시됩니다(6).

참고 항목