Delegáti (Příručka programování C#)
A delegáta je typ, který definuje metodu podpisu.Když konkretizujete delegáta, můžete přiřadit jeho instanci metodou podpisem kompatibilní.Můžete vyvolat (nebo volání) metoda prostřednictvím instance delegáta.
Delegáti se používají k předání metody jako argumenty jiné metody.Obslužné rutiny událostí nejsou nic jiného než metody, které jsou vyvolány prostřednictvím delegátů.Vytvořit vlastní metodu a třídy, například ovládací prvek systému windows může volat metodu při výskytu určité události.Následující příklad ukazuje deklaraci delegáta:
public delegate int PerformCalculation(int x, int y);
Každá metoda třídy přístupné nebo struktura, která odpovídá podpisu delegáta, který je tvořen návratový typ a parametry, lze přiřadit delegáta.Metoda může být statické nebo metody instance.To umožňuje programově změnit volání metody a také nový kód do existujících tříd.Co víte o podpisu delegáta, můžete přiřadit vlastní metodu.
[!POZNÁMKA]
V kontextu přetížení metody neobsahuje podpis metody vrácenou hodnotu.Ale v kontextu Delegáti podpis vrácenou hodnotu.Jinými slovy metoda musí mít stejnou hodnotu jako delegát.
Schopnost odkazovat jako parametr metody díky Delegáti ideální pro definování metod zpětného volání.Například odkaz na metodu, která porovnává dva objekty nelze předat jako argument algoritmus řazení.Porovnání kódu je v samostatné řízení, algoritmus řazení lze zapsat obecnějším způsobem.
Přehled delegáty
Delegáti mají následující vlastnosti:
Delegáti jsou jako ukazatelů funkcí jazyka C++, ale typ bezpečné.
Delegáti povolit metody, které mají být předány jako parametry.
Delegáti lze definovat metody zpětného volání.
Delegáti mohou být zřetězeno; například lze volat více metod na jedné události.
Metody nemusí přesně odpovídat podpisu delegáta.Další informace naleznete v tématu Použití odchylky v Delegáti (C# a Visual Basic).
C# verze 2.0 zaveden pojem Anonymní metody, které umožní bloky kódu, které mají být předány jako parametry namísto odděleně definované metody.C# 3.0 zavedla lambda výrazy jako způsob zápisu bloků kódu vloženého stručnější.Typy delegování kompilují anonymní metody a lambda výrazů (v určitých kontextech).Společně tyto funkce jsou nyní známé jako anonymní funkce.Další informace o výrazech lambda, viz Anonymní funkce (Příručka programování C#).
V tomto oddíle
Použití deleguje namísto rozhraní (C# Příručka programování)
Delegáti s název vs. Anonymní metody (Příručka programování C#)
Jak: kombinování Delegáti (vícesměrového vysílání delegáti) (C# Příručka programování)
Jak: deklarovat, konkretizovat a použití delegáta (Příručka programování C#)
Specifikace jazyka C#
Další informace naleznete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.
Hlavní kapitoly knihy
Delegates, Events, and Lambda ExpressionsvC# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers
Delegates and EventsvLearning C# 3.0: Master the fundamentals of C# 3.0
Viz také
Referenční dokumentace
Události (Příručka programování C#)