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ı
MathOperatorbir temsilci oluşturun.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As DoubleAddNumbersile eşleşen parametreler ve geri dönüş değeri ile imzaların eşleşmesi için,MathOperatoradlı bir yordam oluşturun.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End FunctionSubtractNumbersadında,MathOperatorile 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 FunctionTemsilciyi parametre olarak alan
DelegateTestadlı bir yordam oluşturun.Bu yordam, imzaları
AddNumbersimzasıyla eşleştiği içinSubtractNumbersveyaMathOperatoriç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 SubTestadlı bir prosedür oluşturun; bu prosedürDelegateTest’i, bir kezAddNumbersiçin temsilciyi parametre olarak, bir kez deSubtractNumbersiç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'in5ve3üzerinde hareket etmesinin sonucunu görüntüler ve bu sonuç 8'dir. Sonra,SubtractNumbers,9ve3üzerinde etkili olduğunda elde edilen sonuç görüntülenir ve bu sonuç 6’dır.