Megosztás a következőn keresztül:


Útmutató: Eljárások átadása egy másik eljáráshoz a Visual Basicben

Ez a példa bemutatja, hogyan adhat át egy eljárást egy másik eljárásnak meghatalmazottak használatával.

A meghatalmazott olyan típus, amelyet a Visual Basic bármely más típushoz hasonlóan használhat. Az AddressOf operátor egy delegált objektumot ad vissza egy eljárásnévre alkalmazva.

Ez a példa egy delegált paraméterrel rendelkező eljárással rendelkezik, amely hivatkozhat egy másik, az operátorral beszerzett eljárásra AddressOf .

A delegálási és egyeztetési eljárások létrehozása

  1. Hozzon létre egy meghatalmazottat .MathOperator

    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
    
  2. Hozzon létre egy paraméterekkel és visszaadott értékkel ellátott AddNumbers eljárást, amely megfelel azoknak MathOperator, hogy az aláírások egyezzenek.

    Function AddNumbers( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
        Return x + y
    End Function
    
  3. Hozzon létre egy, a megfelelő MathOperatoraláírással ellátott SubtractNumbers eljárást.

    Function SubtractNumbers( 
        ByVal x As Double, 
        ByVal y As Double
    ) As Double
        Return x - y
    End Function
    
  4. Hozzon létre egy olyan eljárást, DelegateTest amely paraméterként egy delegáltat vesz igénybe.

    Ez az eljárás elfogadhat egy hivatkozást AddNumbers , vagy SubtractNumbersazért, mert az aláírásuk megegyezik az aláírással 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. Hozzon létre egy olyan eljárást Test , amely egyszer meghívja DelegateTest a meghatalmazottat AddNumbers paraméterként, majd a meghatalmazottat SubtractNumbers paraméterként.

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

    Amikor Test a rendszer meghívja, először megjeleníti a működés 5 eredményétAddNumbers, és 3a 8-at. Ezután megjelenik és 3 megjelenik a működés 9 eredményeSubtractNumbers, ami 6.

Lásd még