Sdílet prostřednictvím


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

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#)

Delegate

Koncepty

Příručka programování C#