Delegate Deyimi

Temsilci bildirmek için kullanılır. Temsilci, bir tür yöntemine veya bir Shared nesnenin örnek yöntemine başvuran bir başvuru türüdür. Eşleşen parametre ve dönüş türlerine sahip herhangi bir yordam, bu temsilci sınıfının bir örneğini oluşturmak için kullanılabilir. Daha sonra yordam, temsilci örneği yoluyla çağrılabilir.

Sözdizimi

[ <attrlist> ] [ accessmodifier ] _  
[ Shadows ] Delegate [ Sub | Function ] name [( Of typeparamlist )] [([ parameterlist ])] [ As type ]  

Parça

Süre Tanım
attrlist isteğe bağlı. Bu temsilci için geçerli olan özniteliklerin listesi. Birden çok öznitelik virgülle ayrılır. Öznitelik Listesi'ni açılı ayraçlar ("<" ve ">") içine almanız gerekir.
accessmodifier isteğe bağlı. Temsilciye hangi kodun erişebileceğini belirtir. Aşağıdakilerden biri olabilir:

- Genel. Temsilciyi bildiren öğeye erişebilen tüm kodlar bu öğeye erişebilir.
- Korumalı. Yalnızca temsilcinin sınıfındaki koda veya türetilmiş bir sınıfa erişebilir.
- Arkadaş. Temsilciye yalnızca aynı derlemedeki kod erişebilir.
- Özel. Yalnızca temsilciyi bildiren öğesindeki koda erişebilir.

- Temsilcinin sınıfı, türetilmiş bir sınıf veya aynı derleme içindeki Korumalı Yalnızca Arkadaş kodu temsilciye erişebilir.
- Özel Korumalı Yalnızca temsilcinin sınıfındaki veya aynı derlemedeki türetilmiş bir sınıftaki kod temsilciye erişebilir.
Shadows isteğe bağlı. Bu temsilcinin aynı adlı programlama öğesini veya aşırı yüklenmiş öğe kümesini temel sınıfta yeniden adlandırdığını ve gizlediğini gösterir. Bildirilen herhangi bir öğe türünü başka bir türle gölgeleyebilirsiniz.

Gölgeli öğe, gölgelendirme öğesinin erişilemez olduğu durumlar dışında, gölgelenen öğeyi gölgeleyen türetilmiş sınıfın içinden kullanılamaz. Örneğin, bir Private öğe temel sınıf öğesini gölgelerse, öğeye erişme Private izni olmayan kod bunun yerine temel sınıf öğesine erişir.
Sub İsteğe bağlı, ancak ya da SubFunction görünmelidir. Bu yordamı, değer döndürmeyen bir temsilci Sub yordamı olarak bildirir.
Function İsteğe bağlı, ancak ya da SubFunction görünmelidir. Bu yordamı, değer döndüren bir temsilci Function yordamı olarak bildirir.
name Gerekli. Temsilci türünün adı; standart değişken adlandırma kurallarını izler.
typeparamlist isteğe bağlı. Bu temsilci için tür parametrelerinin listesi. Birden çok tür parametresi virgülle ayrılır. İsteğe bağlı olarak, her tür parametresi ve Out genel değiştiriciler kullanılarak In değişken olarak bildirilebilir. Tür Listesi'ni parantez içine almanız ve anahtar sözcüğüyle Of tanıtmalısınız.
parameterlist isteğe bağlı. Çağrıldığında yordama geçirilen parametrelerin listesi. Parametre Listesi'ni parantez içine almanız gerekir.
type Bir Function yordam belirtirseniz gereklidir. Dönüş değerinin veri türü.

Açıklamalar

deyimi, Delegate bir temsilci sınıfının parametresini ve dönüş türlerini tanımlar. Eşleşen parametrelere ve dönüş türlerine sahip herhangi bir yordam, bu temsilci sınıfının bir örneğini oluşturmak için kullanılabilir. Daha sonra yordam, temsilcinin yöntemi çağrılarak Invoke temsilci örneği yoluyla çağrılabilir.

Temsilciler ad alanı, modül, sınıf veya yapı düzeyinde bildirilebilir, ancak bir yordam içinde bildirilebilir.

Her temsilci sınıfı, bir nesne yönteminin belirtimini geçirilen bir oluşturucu tanımlar. Temsilci oluşturucuya yönelik bağımsız değişken, bir yönteme veya lambda ifadesine başvuru olmalıdır.

Bir yönteme başvuru belirtmek için aşağıdaki söz dizimini kullanın:

AddressOf [expression.]methodname

derleme zamanı türü expression , bir sınıfın adı veya imzası temsilci sınıfının imzası ile eşleşen belirtilen adın yöntemini içeren bir arabirim olmalıdır. methodname paylaşılan bir yöntem veya örnek yöntemi olabilir. methodname sınıfının varsayılan yöntemi için bir temsilci oluştursanız bile isteğe bağlı değildir.

Lambda ifadesi belirtmek için aşağıdaki söz dizimini kullanın:

Function ([parm Olarak type, parm2 Olarak type2, ...]) expression

İşlevin imzası temsilci türüyle eşleşmelidir. Lambda ifadeleri hakkında daha fazla bilgi için bkz . Lambda İfadeleri.

Temsilciler hakkında daha fazla bilgi için bkz . Temsilciler.

Örnek

Aşağıdaki örnek, iki sayı üzerinde işlem yapmak ve bir sayı döndürmek üzere bir temsilci bildirmek için deyimini kullanır Delegate . yöntemi, DelegateTest bu tür bir temsilcinin örneğini alır ve bu temsilciyi sayı çiftleri üzerinde çalışmak için kullanır.

Delegate Function MathOperator( 
    ByVal x As Double, 
    ByVal y As Double 
) As Double

Function AddNumbers( 
    ByVal x As Double, 
    ByVal y As Double 
) As Double
    Return x + y
End Function

Function SubtractNumbers( 
    ByVal x As Double, 
    ByVal y As Double
) As Double
    Return x - y
End Function

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

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

Ayrıca bkz.