Sdílet prostřednictvím


Delegate – příkaz

Používá deklarovat delegát.delegát je typ odkazovat se , který odkazuje Shared metoda typu nebo metoda instance objekt. Jakýkoli procedura s odpovídajícími typy vratky a parametr může být použit k vytvořit instance tétotřída delegát. procedura lze potom později vyvolat z instance delegát .

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

Části

Termín

Definice

attrlist

Nepovinné.Seznam atributů, že párovat tohoto delegát.Více atributů jsou odděleny čárkami.Je nutné uzavřít Seznam atributů (Visual Basic) v lomených závorkách ("<"a">").

accessmodifier

Nepovinné.Určuje, jaký kód přístup delegát.Může být jeden z následujících:

  • Veřejné.Možné spustit libovolný kód, který přístup k prvku, který prohlašuje delegát .

  • Chráněné.Možné spustit pouze kód v rámci delegátna třída nebo odvozené třída .

  • Přítel.Pouze kód v rámci stejné sestavení přístup delegát.

  • Soukromé.Možné spustit pouze kód v rámci prvku, který deklaruje delegát .

Můžete určit Protected Friend přístup z kódu v rámci delegátna třída, odvozené třídanebo stejné sestavení.

Shadows

Nepovinné.Označuje, že tento delegát redeclares a skryje identicky pojmenované programovací element nebo sada přetížené prvků v základní třída.Vytvořit stínovou kopii jakéhokoli druhu prohlášené prvku s jiným typem.

Stínovaný prvek je k dispozici v rámci odvozené třída , stínů, s výjimkou z kde stínového provozu prvku je nepřístupné.Například pokud Private prvek stínů prvku základní třída , kód, který nemá oprávnění k přístupu Private prvku místo přistupuje prvku základní třída .

Sub

Volitelné, ale buď Sub nebo Function musí být uvedeny.Tento procedura jako delegátprohlašujeSubprocedura nevrací hodnotu.

Function

Volitelné, ale buď Sub nebo Function musí být uvedeny.Tento procedura jako delegátprohlašujeFunctionprocedura , který vrací hodnotu.

name

Povinné.Název typu delegát ; Následuje standardní proměnná pojmenovacím konvencím.

typeparamlist

Nepovinné.Seznam parametrů typu tohoto delegát.Více parametrů typu jsou odděleny čárkami.Volitelně každý typ parametr lze deklarovat varianty pomocí In a Out generic modifikátory.Je nutné uzavřít Seznam typů (Visual Basic) v závorkách a s Of klíčové slovo.

parameterlist

Nepovinné.Seznam parametrů, které jsou předány procedura , když je zavolána.Je nutné uzavřít Seznam parametrů (Visual Basic) v závorkách.

type

Požadováno, pokud zadáte Function procedura. Datový typ vrácené hodnoty.

Poznámky

Delegate výpis definuje parametr a návratové typy delegáttřída. S odpovídajícími parametry a návratové typy jakýkoli procedura může být použit k vytvořit instance tétotřída delegát. procedura lze potom později vyvolat z instance delegát voláním delegátna Invoke metoda.

Delegáti lze deklarovat na úrovni obor názvů, modul, třídanebo struktura , ale nejsou v rámci procedura.

Každátřída delegátdefinuje konstruktor je předán specifikacemetoda objekt. argument konstruktor delegát, musí být odkazovat se na metodanebo lambda výraz.

Chcete-li určit odkazovat se metoda, použijte následující syntaxi:

AddressOf [expression.]methodname

kompilovat-typ času expression musí být název třída nebo rozhraní , které obsahuje metoda určený název, jehož signatura odpovídá signatura delegáttřída. methodname Mohou být sdílené metoda nebo metodainstance.methodname Je nepovinný, i když vytvořit delegát výchozí metoda třída.

Chcete-li zadat výraz lambda, použijte následující syntaxi:

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

signatura funkce musí odpovídat typu delegát .Další informace o výrazech lambda, viz Lambda – výrazy (Visual Basic).

Další informace o delegátech naleznete v části Delegáti (Visual Basic).

Příklad

V následujícím příkladu Delegate výpis deklarovat delegát na dvě čísla a vrací číslo. DelegateTest metoda přebírá instanci delegát tohoto typu a používá na dvojic čísel.

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

Viz také

Úkoly

Postupy: Použití obecné třídy (Visual Basic)

Referenční dokumentace

AddressOf – operátor (Visual Basic)

Of – klauzule (Visual Basic)

In (generický modifikátor) (Visual Basic)

Out (generický modifikátor) (Visual Basic)

Koncepty

Obecné typy v jazyce Visual Basic (Visual Basic)

Další zdroje

Delegáti (Visual Basic)

Kovariance a kontravariance (C# and Visual Basic)