다음을 통해 공유


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

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

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

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

대리자와 매칭 절차 만들기

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

    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
    
  2. AddNumbers와 매개 변수 및 반환 값이 일치하는 프로시저 MathOperator를 만들어 서명이 일치하도록 합니다.

    Function AddNumbers( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
        Return x + y
    End Function
    
  3. SubtractNumbers이라는 이름으로 MathOperator에 일치하는 시그니처를 가진 프로시저를 만드세요.

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

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

    Test가 호출되면, AddNumbers53가 적용된 결과인 8을 먼저 표시합니다. 그런 다음 SubtractNumbers93에 작용한 결과가 표시됩니다, 결과는 6입니다.

참고하십시오