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.
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çalar
| Süre | Tanım |
|---|---|
attrlist |
Opsiyonel. 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 |
Opsiyonel. 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. - Korumalı Arkadaş Temsilciye yalnızca temsilcinin sınıfındaki kod, türetilmiş bir sınıf veya aynı derleme erişebilir. - Özel Korumalı Temsilciye yalnızca temsilcinin sınıfındaki veya aynı derlemedeki türetilmiş bir sınıftaki kod erişebilir. |
Shadows |
Opsiyonel. 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 |
Opsiyonel. 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 |
Opsiyonel. Ç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 uyumlu olmalıdır. 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