Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
adlı
MathOperator
bir temsilci oluşturun.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As Double
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
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
Temsilciyi parametre olarak alan
DelegateTest
adlı bir yordam oluşturun.Bu yordam, imzaları
AddNumbers
imzasıyla eşleştiği içinSubtractNumbers
veyaMathOperator
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
Test
adlı bir prosedür oluşturun; bu prosedürDelegateTest
’i, bir kezAddNumbers
için temsilciyi parametre olarak, bir kez deSubtractNumbers
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
'in5
ve3
üzerinde hareket etmesinin sonucunu görüntüler ve bu sonuç 8'dir. Sonra,SubtractNumbers
,9
ve3
üzerinde etkili olduğunda elde edilen sonuç görüntülenir ve bu sonuç 6’dır.