Delegate Deyimi
Bir temsilciyi bildirilen için kullanılır. Temsilci, bir türün yöntemine veya bir nesnenin örnek yöntemine Shared başvuran bir başvuru t t tü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. Yordam daha sonra temsilci örneği ile çağrılabilir.
Syntax
[ <attrlist> ] [ accessmodifier ] _
[ Shadows ] Delegate [ Sub | Function ] name [( Of typeparamlist )] [([ parameterlist ])] [ As type ]
Bölümler
| Süre | Tanım |
|---|---|
attrlist |
İsteğe bağlı. Bu temsilci için geçerli olan özniteliklerin listesi. Birden çok öznitelik virgülle ayrılır. Öznitelik Listesini açılı ayraç (" " ve < " ") içine > alasınız. |
accessmodifier |
İsteğe bağlı. Temsilciye erişen kodu belirtir. Aşağıdakilerden biri olabilir: - Genel . Temsilciyi bildiren öğeye erişen herhangi bir kod bu öğeye erişebilirsiniz. - Korumalı . Yalnızca temsilcinin sınıfı veya türetilmiş bir sınıf içindeki kod bu koda erişebilirsiniz. - Arkadaş . Temsilciye yalnızca aynı derleme içindeki kod erişebilirsiniz. - Özel . Yalnızca temsilciyi bildiren öğe içindeki kod buna erişebilirsiniz. - Korumalı Arkadaş Temsilciye yalnızca temsilcinin sınıfı, türetilmiş bir sınıf veya aynı derleme içindeki kod erişebilirsiniz. - Özel Korumalı Temsilciye yalnızca temsilcinin sınıfındaki veya aynı derlemede türetilmiş bir sınıftaki kod erişebilirsiniz. |
Shadows |
İsteğe bağlı. Bu temsilcinin bir temel sınıfta aynı adlı programlama öğesini veya aşırı yüklenmiş öğe dizilerini redeclares ve gizler gösterir. Herhangi bir tür bildirilen öğeyi başka bir türle gölgeli ebilirsiniz. Gölgeli öğe, gölgeli öğenin erişilemez olduğu yer dışında onu gölgeden alan türetilmiş sınıfın içinde kullanılamaz. Örneğin, bir öğe temel sınıf öğesini gölgelerse, öğeye erişim iznine sahip olan kod bunun Private yerine temel sınıf öğesine Private erişer. |
Sub |
İsteğe bağlı, ancak Sub veya Function görüntü gerekir. Bu yordamı bir değer dönmeyen Sub bir temsilci yordamı olarak bildirmektedir. |
Function |
İsteğe bağlı, ancak Sub veya Function görüntü gerekir. Bu yordamı bir değer döndüren Function bir temsilci yordamı olarak bildirmektedir. |
name |
Gereklidir. Temsilci türünün adı; standart değişken adlandırma kurallarına göre hesaplanır. |
typeparamlist |
İsteğ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 genel değiştiriciler In Out kullanılarak değişken bildir olabilir. Tür Listesini parantez içine alıp anahtar sözcüğüyle Of tanıtmalı. |
parameterlist |
İsteğe bağlı. Çağrıldıkları zaman yordama geçirilen parametrelerin listesi. Parametre Listesini parantez içine alalız. |
type |
Bir yordam belirtirken Function 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. Yordam daha sonra temsilcinin yöntemi çağrılarak temsilci örneğiyle Invoke çağrılabilir.
Temsilciler ad alanı, modül, sınıf veya yapı düzeyinde bildiriliyor ancak bir yordam içinde bildirilenem yok.
Her temsilci sınıfı, bir nesne yönteminin belirtimi geçirilen bir oluşturucu tanımlar. Temsilci oluşturucusu için bağımsız değişken, bir yönteme başvuru veya lambda ifadesi olması gerekir.
Bir yönteme başvuru belirtmek için aşağıdaki söz dizimlerini kullanın:
AddressOf [expression.]methodname
derleme zamanı türü, belirtilen adın imzasını temsilci sınıfının imzasıyla eşleşen bir yöntemi içeren bir sınıfın veya arabirimin expression adı olması gerekir. methodname, paylaşılan bir yöntem veya örnek yöntemi olabilir. methodnamesı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özdizimini kullanın:
Function ([ parm As , As , type parm2 type2 ...]) expression
İşlevin imzası, temsilci türününkiyle eşleşmeli. 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ı Delegate üzerinde çalışan ve bir sayı döndüren bir temsilciyi bildirerek deyimini kullanır. yöntemi DelegateTest bu tür bir temsilcinin örneğini alır ve sayı çiftleri üzerinde çalıştırmak için bunu 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