Delegát prohlášení
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:
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 Typ seznamu (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
Jak: použití obecného třídy (Visual Basic)
Referenční dokumentace
Operátor AddressOf (Visual Basic)
V (Generic modifikátor) (Visual Basic)
Mimo (Generic modifikátor) (Visual Basic)
Koncepty
Obecné typy jazyka Visual Basic (Visual Basic)