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.
delegát je typ, který zastupuje odkazy na metody s konkrétním seznamem parametrů a návratovým typem. Při vytváření instance delegáta můžete přidružit instanci delegáta k jakékoli metodě, která má kompatibilní podpis a návratový typ. Metodu můžete vyvolat (nebo volat) prostřednictvím instance delegáta.
Vkládání metod jako argumentů do jiných metod se provádí pomocí delegátů. Obslužné rutiny událostí jsou v podstatě metody, které voláte prostřednictvím delegátů. Když vytvoříte vlastní metodu, třída, jako je například ovládací prvek Windows, může volat vaši metodu, když dojde k určité události.
Následující příklad ukazuje deklaraci delegáta:
public delegate int PerformCalculation(int x, int y);
Můžete přiřadit jakoukoli metodu z jakékoli přístupné třídy nebo struktury, která odpovídá typu delegátu. Metoda může být statická nebo metoda instance. Flexibilita umožňuje programově změnit volání metod nebo zapojit nový kód do existujících tříd.
Poznámka
V kontextu přetížení metody podpis metody nezahrnuje návratovou hodnotu. V kontextu delegátů však podpis obsahuje návratovou hodnotu. Jinými slovy, metoda musí mít kompatibilní návratový typ jako návratový typ deklarovaný delegátem.
Schopnost odkazovat na metodu jako parametr činí delegáty ideální pro definování metod zpětného volání. Můžete napsat metodu, která porovnává dva objekty v aplikaci. Metodu lze pak použít v delegaci pro algoritmus řazení. Vzhledem k tomu, že porovnávací kód je oddělený od knihovny, může být metoda řazení obecnější.
ukazatele funkcí podporují podobné scénáře, kdy potřebujete větší kontrolu nad konvencí volání. Kód přidružený k delegátu se vyvolá pomocí virtuální metody přidané do typu delegáta. Při práci s ukazateli funkce můžete zadat různé konvence.
Prozkoumání charakteristik delegáta
Delegáti mají následující charakteristiky:
- Delegáti umožňují předávání metod jako parametrů.
- Delegáty lze použít k definování metod zpětného volání.
- Delegáti mohou být zřetězeni dohromady, například voláním více metod na jednu událost.
- Metody nemusí přesně odpovídat typu delegáta. Další informace naleznete v tématu Použití rozptylu v delegátech.
- Výrazy lambda představují stručnější způsob psaní jednoduchých bloků kódu. Výrazy lambda (v určitých kontextech) se kompilují na typy delegátů. Další informace o výrazech lambda najdete v tématu Výrazy lambda.
Projděte si související články
Další informace o delegátech najdete v následujících článcích:
- použití delegátů
- Delegáti s pojmenovanými a anonymními metodami
- Použití kovariance u delegátů
- Jak sloučit delegáty (vícesměrové delegáty)
- Jak deklarovat, vytvořit instanci a používat delegáta
Přístup ke specifikaci jazyka C#
Specifikace jazyka je konečným zdrojem syntaxe a použití jazyka C#. Další informace najdete v tématu Delegáti ve specifikaci jazyka C#.