Aracılığıyla paylaş


Nasıl yapılır: Visual Basic'te Yordamları Başka Bir Yordama Geçirme

Bu örnekte, bir yordamı başka bir yordama geçirmek için temsilcilerin nasıl kullanılacağı gösterilmektedir.

Temsilci, Visual Basic'teki diğer türlerde olduğu gibi kullanabileceğiniz bir türdür. AddressOf işleci, bir yordam adına uygulandığında bir temsilci nesnesi döndürür.

Bu örnekte, AddressOf işleciyle elde edilen başka bir yordama referans alabilen bir temsilci parametresine sahip bir prosedür bulunmaktadır.

Temsilci ve eşleşen prosedürleri oluştur

  1. adlı MathOperatorbir temsilci oluşturun.

    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
    
  2. AddNumbers ile eşleşen parametreler ve geri dönüş değeri ile imzaların eşleşmesi için, MathOperator adlı bir yordam oluşturun.

    Function AddNumbers( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
        Return x + y
    End Function
    
  3. SubtractNumbers adında, MathOperator ile eşleşen bir imzaya sahip bir yordam oluşturun.

    Function SubtractNumbers( 
        ByVal x As Double, 
        ByVal y As Double
    ) As Double
        Return x - y
    End Function
    
  4. Temsilciyi parametre olarak alan DelegateTest adlı bir yordam oluşturun.

    Bu yordam, imzaları AddNumbers imzasıyla eşleştiği için SubtractNumbers veya MathOperator için bir başvuru kabul edebilir.

    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 adlı bir prosedür oluşturun; bu prosedür DelegateTest’i, bir kez AddNumbers için temsilciyi parametre olarak, bir kez de SubtractNumbers için temsilciyi parametre olarak çağırır.

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

    Çağrıldığında Test, AddNumbers'in 5 ve 3 üzerinde hareket etmesinin sonucunu görüntüler ve bu sonuç 8'dir. Sonra, SubtractNumbers, 9 ve 3 üzerinde etkili olduğunda elde edilen sonuç görüntülenir ve bu sonuç 6’dır.

Ayrıca bakınız