Delegate — Instrukcja

Aby zadeklarować używane, delegat.delegat jest typ referencyjny , który odnosi się do Shared metoda typu lub metoda instancji obiekt. Wszelkie procedura z dopasowywania parametr i zwracanych typów może być użyty do utworzyć wystąpienia tej klasy delegat .procedura następnie można później można wywołać z instancji delegat .

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

Części

Termin

Definicja

attrlist

Opcjonalne.Lista atrybutów, które stosuje się do tego delegat.Wiele atrybutów są oddzielone przecinkami.Należy ująć Lista atrybutów (Visual Basic) w nawiasy ostre ("<"i">").

accessmodifier

Opcjonalne.Określa, jaki jest numer kierunkowy mogą uzyskać dostęp, delegat.Może mieć jedną z następujących czynności:

  • Publiczne.Każdy kod, który można uzyskać dostęp do elementu, który deklaruje delegat można do niego dostęp.

  • Chronione.Tylko kod w ramach delegatna klasy lub klasa pochodna można do niego dostęp.

  • Przyjaciel.Tylko kod w obrębie tego samego zestaw można uzyskać dostęp, delegat.

  • Prywatne.Tylko kod wewnątrz elementu, który deklaruje delegat można do niego dostęp.

Można określić Protected Friend aby umożliwić dostęp z kodu wewnątrz delegatna klasy, klasa pochodnalub tego samego zestaw.

Shadows

Opcjonalne.Wskazuje, że ten delegat redeclares i ukrywa element programowania o identycznej nazwie, lub zestaw elementów przeciążony, w klasie podstawowej.Można cień wszelkiego rodzaju deklarowanych elementu z innego rodzaju.

Tekst z cieniem element jest niedostępny z w obrębie klasa pochodna cieni, z wyjątkiem, od których przesłaniania element jest niedostępny.Na przykład jeśli Private element cieni elementu klasy podstawowej, kod, który nie ma uprawnienie dostępu do Private elementu zamiast uzyskuje dostęp do elementu klasy podstawowej.

Sub

Opcjonalne, ale albo Sub lub Function musi znajdować się.Tę procedura jako delegatdeklarujeSubprocedura , która nie zwraca wartości.

Function

Opcjonalne, ale albo Sub lub Function musi znajdować się.Tę procedura jako delegatdeklarujeFunctionprocedura , która zwraca wartość.

name

Wymagane.Nazwa typu delegat ; poniżej standardowego zmienna konwencji nazewnictwa.

typeparamlist

Opcjonalne.Lista parametrów typu dla tego delegat.Wiele parametrów typu są oddzielone przecinkami.Opcjonalnie, każdy typ parametr może być deklarowana wariant za pomocą In i Out modyfikatorów rodzajowy.Należy ująć Lista typów (Visual Basic) w nawiasach i wprowadzić ją z Of słowa kluczowego.

parameterlist

Opcjonalne.Lista parametrów, które są przekazywane do procedura , gdy wywoływana jest.Należy ująć Lista parametrów (Visual Basic) w nawiasach.

type

Wymagane, jeśli określisz Function procedura. Typ danych zwracanej wartości.

Uwagi

Delegate wyciąg definiuje parametr oraz zwracanymi typami klasy delegat . Wszelkie procedura z dopasowywania parametrów i zwracanych typów może być użyty do utworzyć wystąpienia tej klasy delegat .procedura może następnie później być wywołany z instancji delegat wywołując delegatna Invoke metoda.

Pełnomocnicy może być deklarowana na poziomie przestrzeń nazw, moduł, klasy lub struktura , ale nie w ramach procedura.

Każda klasa delegat definiuje jest przekazywana specyfikacja obiektmetoda konstruktor . argument dokonstruktor delegatmusi być odniesienie do metodalub wyrażenie lambda.

Aby określić odwołanie do metoda, należy użyć następującej składni:

AddressOf [expression.]methodname

kompilować-czas typu expression musi być nazwą klasy lub interfejs , który zawiera metoda o określonej nazwie, w których podpis nie pasuje do podpisu delegat klasy.methodname Może być udostępniony metoda lub metodainstancji.methodname Nie jest opcjonalny, nawet jeśli można utworzyć delegat dla domyślnej metoda klasy.

Aby określić wyrażenie lambda, należy użyć następującej składni:

Function(parm As type, parm2 As type2, ...])expression

Podpis funkcja musi być zgodne z typem delegat .Aby uzyskać więcej informacji na temat wyrażeń lambda, zobacz Lambda — Wyrażenia (Visual Basic).

Aby uzyskać więcej informacji na temat delegatów, zobacz Delegaty (Visual Basic).

Przykład

W poniższym przykładzie użyto Delegate wyciąg zadeklarować delegat działających na dwóch liczb i zwraca liczbę. DelegateTest metoda pobiera wystąpienia delegat tego typu i używa go eksploatować parami cyfr.

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

Zobacz też

Zadania

Porady: używanie klasy ogólnej (Visual Basic)

Informacje

AddressOf — Operator (Visual Basic)

Of — Klauzula (Visual Basic)

In (modyfikator ogólny) (Visual Basic)

Out (modyfikator ogólny) (Visual Basic)

Koncepcje

Typy ogólne w Visual Basic (Visual Basic)

Inne zasoby

Delegaty (Visual Basic)

Kowariancja i kontrawariancja (C# i Visual Basic)