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 delegáltat 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 SubtractNumbers eljárást, amelynek aláírása megfelel a MathOperator-nak.

    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 AddNumbers vagy SubtractNumbers hivatkozást, mert az aláírásuk megegyezik a MathOperator aláírással.

    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 Test nevű eljárást, amely egyszer meghívja a DelegateTest-et a AddNumbers delegáttal mint paraméter, majd újra meghívja a DelegateTest-et a delegáttal mint paraméter.

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

    Amikor Test meghívásra kerül, először megjelenik az eredménye annak, hogy AddNumbers hatással van 5 és 3 értékeire, amely eredmény 8. Ezután megjelenik SubtractNumbers működése 9-ra és 3-re, ami 6.

Lásd még