Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Slouží k deklaraci delegáta. Delegát je referenční typ, který odkazuje na Shared metodu typu nebo na metodu instance objektu. Jakoukoli proceduru s odpovídajícími parametry a návratovými typy lze použít k vytvoření instance této třídy delegáta. Procedura se pak může později vyvolat pomocí instance delegáta.
Syntaxe
[ <attrlist> ] [ accessmodifier ] _
[ Shadows ] Delegate [ Sub | Function ] name [( Of typeparamlist )] [([ parameterlist ])] [ As type ]
Součástky
| termín | Definice |
|---|---|
attrlist |
Volitelný. Seznam atributů, které platí pro tohoto delegáta Více atributů je odděleno čárkami.
Seznam atributů musíte uzavřít do úhlových závorek ("<" a ">"). |
accessmodifier |
Volitelný. Určuje, jaký kód má přístup k delegátu. Může to být jedna z následujících možností: - Veřejná. Jakýkoli kód, který má přístup k elementu, který deklaruje delegát, k němu má přístup. - Chráněno. Přístup k němu má pouze kód v rámci třídy delegáta nebo odvozené třídy. - Přítel. K delegátu má přístup pouze kód ve stejném sestavení. - Soukromé. Přístup k němu má pouze kód v rámci elementu, který deklaruje delegáta. - Chráněný přítel K delegátovi mají přístup pouze kód v rámci třídy delegáta, odvozené třídy nebo stejného sestavení. - Privátní ochrana K delegátovi mají přístup pouze kód v rámci třídy delegáta nebo v odvozené třídě ve stejném sestavení. |
Shadows |
Volitelný. Označuje, že tento delegát předefinuje a skryje identicky pojmenovaný programovací prvek nebo sadu přetížených prvků v základní třídě. Můžete stínovat jakýkoli druh deklarovaného prvku s jakýmkoli jiným druhem. Stínovaný element není k dispozici v odvozené třídě, která ho stínuje, s výjimkou místa, kde je prvek stínování nepřístupný. Pokud Private například element stínuje element základní třídy, kód, který nemá oprávnění pro přístup k elementu Private , místo toho přistupuje k elementu základní třídy. |
Sub |
Volitelné, ale Sub musí se zobrazit nebo Function musí. Deklaruje tento postup jako proceduru delegáta Sub , která nevrací hodnotu. |
Function |
Volitelné, ale Sub musí se zobrazit nebo Function musí. Deklaruje tento postup jako proceduru delegáta Function , která vrací hodnotu. |
name |
Povinné. Jméno typu delegáta; se řídí standardními zásadami vytváření názvů proměnných. |
typeparamlist |
Volitelný. Seznam parametrů typu pro tohoto delegáta Parametry více typů jsou oddělené čárkami. Volitelně lze každý parametr typu deklarovat variantu pomocí In a Out obecných modifikátorů.
Seznam typů musíte uzavřít do závorek a zavést ho klíčovým slovemOf. |
parameterlist |
Volitelný. Seznamparametrůch Seznam parametrů musíte uzavřít do závorek. |
type |
Vyžaduje se, pokud zadáte proceduru Function . Datový typ návratové hodnoty |
Poznámky
Příkaz Delegate definuje parametr a návratové typy třídy delegáta. Jakoukoli proceduru s odpovídajícími parametry a návratovými typy lze použít k vytvoření instance této třídy delegáta. Proceduru lze později vyvolat pomocí instance delegáta voláním metody delegáta Invoke .
Delegáty lze deklarovat na úrovni oboru názvů, modulu, třídy nebo struktury, ale ne v rámci procedury.
Každá třída delegáta definuje konstruktor, kterému je předána specifikace metody objektu. Argument konstruktoru delegáta musí být odkaz na metodu nebo výraz lambda.
Pokud chcete zadat odkaz na metodu, použijte následující syntaxi:
AddressOf [expression.]methodname
Typ expression během kompilace musí být názvem třídy nebo rozhraní, které obsahuje metodu se zadaným názvem, jejíž podpis odpovídá podpisu delegátního typu.
methodname může být buď sdílenou metodou nebo metodou instance.
methodname není volitelný, i když vytvoříte delegáta pro výchozí metodu třídy.
Pokud chcete zadat výraz lambda, použijte následující syntaxi:
Function ([parm As type, parm2 As type2, ...]) expression
Podpis funkce se musí shodovat s typem delegáta. Další informace o výrazech lambda najdete v tématu Výrazy lambda.
Další informace o delegátech najdete v tématu Delegáti.
Příklad
Následující příklad používá příkaz Delegate k deklaraci delegáta pro provoz na dvou číslech a vrácení čísla. Metoda DelegateTest přebírá instanci delegáta tohoto typu a používá ji k práci s dvojicemi čí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