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.
Operátor delegate vytvoří anonymní metodu, kterou můžete převést na typ delegáta.
Referenční dokumentace jazyka C# dokumentuje naposledy vydané verze jazyka C#. Obsahuje také počáteční dokumentaci k funkcím ve verzi Public Preview pro nadcházející jazykovou verzi.
Dokumentace identifikuje všechny funkce, které byly poprvé představeny v posledních třech verzích jazyka nebo v aktuálních verzích Public Preview.
Návod
Informace o tom, kdy byla funkce poprvé představena v jazyce C#, najdete v článku o historii verzí jazyka C#.
Anonymní metodu můžete převést na typy jako System.Action a System.Func<TResult>. Mnoho metod používá tyto typy jako argumenty.
Func<int, int, int> sum = delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(3, 4)); // output: 7
Poznámka:
Výrazy lambda poskytují stručnější a výraznější způsob, jak vytvořit anonymní funkci. K vytvoření výrazu lambda použijte operátor =>:
Func<int, int, int> sum = (a, b) => a + b;
Console.WriteLine(sum(3, 4)); // output: 7
Další informace o funkcích výrazů lambda, například zachycení vnějších proměnných, najdete v tématu Výrazy lambda.
Pokud použijete delegate operátor, můžete seznam parametrů vynechat. Pokud seznam parametrů vynecháte, vytvoříte anonymní metodu, kterou můžete převést na typ delegáta s libovolným seznamem parametrů, jak ukazuje následující příklad:
Action greet = delegate { Console.WriteLine("Hello!"); };
greet();
Action<int, double> introduce = delegate { Console.WriteLine("This is world!"); };
introduce(42, 2.7);
// Output:
// Hello!
// This is world!
Tato funkce je jedinou funkcí anonymních metod, které výrazy lambda nepodporují. Ve všech ostatních případech použijte výraz lambda k napsání vloženého kódu. Pomocí zahození můžete zadat dva nebo více vstupních parametrů anonymní metody, které metoda nepoužívá:
Func<int, int, int> constant = delegate (int _, int _) { return 42; };
Console.WriteLine(constant(3, 4)); // output: 42
Pro zpětnou kompatibilitu, pokud je pojmenován _pouze jeden parametr , kompilátor považuje _ za název tohoto parametru v rámci anonymní metody.
static Modifikátor použijte při deklaraci anonymní metody:
Func<int, int, int> sum = static delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(10, 4)); // output: 14
Statická anonymní metoda nemůže zachytit místní proměnné ani stav instance z uzavřených oborů.
Pomocí klíčového delegate slova deklarujte typ delegáta.
Kompilátor může uložit objekt delegáta do mezipaměti, který vytvoří ze skupiny metod. Zvažte následující metodu:
static void StaticFunction() { }
Když přiřadíte skupinu metod delegátu, kompilátor ukládá delegáta do mezipaměti:
Action a = StaticFunction;
Specifikace jazyka C#
Další informace najdete v části Anonymní výrazy funkce specifikace jazyka jazyka C#.