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 Sub Function görünmelidir. Bu yordamı, değer döndürmeyen bir temsilci Sub yordamı olarak bildirir. |
Function |
İsteğe bağlı, ancak ya da Sub Function 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