Anonymní funkce (Příručka programování C#)
Anonymní funkce je "vložené" prohlášení nebo výraz, který lze použít všude, kde je očekáván typ delegáta.Můžete ji k inicializaci pojmenovaný delegát nebo předat místo pojmenovaný delegát typu jako parametr metody.
Existují dva druhy anonymní funkce, které jsou jednotlivě popsány v následujících tématech:
Anonymní metody (Příručka programování C#)
[!POZNÁMKA]
Stromy výrazů a delegáti mohou být vázány lambda výrazy.
Vývoj Delegáti v jazyce C#
V C# 1.0 vytvořit instanci delegáta pomocí explicitní inicializaci s metodou, která byla definována jinde v kódu.C# 2.0 představil koncept anonymní metody jako způsob zápisu nepojmenované vložený příkaz bloky, které mohou být provedeny v vyvolání delegáta.C# 3.0 zavedla lambda výrazy, které jsou obdobou anonymní metody, ale výrazové a výstižné.Tyto dvě funkce jsou souhrnně označované jako anonymní funkce.Obecně, aplikace, cílová verze 3.5 a novější .NET Framework by měl použít lambda výrazy.
Následující příklad ukazuje vývoj vytváření delegáta z C# 1.0 C# 3.0:
class Test
{
delegate void TestDelegate(string s);
static void M(string s)
{
Console.WriteLine(s);
}
static void Main(string[] args)
{
// Original delegate syntax required
// initialization with a named method.
TestDelegate testDelA = new TestDelegate(M);
// C# 2.0: A delegate can be initialized with
// inline code, called an "anonymous method." This
// method takes a string as an input parameter.
TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); };
// C# 3.0. A delegate can be initialized with
// a lambda expression. The lambda also takes a string
// as an input parameter (x). The type of x is inferred by the compiler.
TestDelegate testDelC = (x) => { Console.WriteLine(x); };
// Invoke the delegates.
testDelA("Hello. My name is M and I write lines.");
testDelB("That's nothing. I'm anonymous and ");
testDelC("I'm a famous author.");
// Keep console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
/* Output:
Hello. My name is M and I write lines.
That's nothing. I'm anonymous and
I'm a famous author.
Press any key to exit.
*/
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#.
Viz také
Referenční dokumentace
Příkazy, výrazy a operátory (Příručka programování C#)
Lambda výrazy (Příručka programování C#)
Delegáti (Příručka programování C#)