Operator „delegate“ (C#-Referenz)delegate operator (C# reference)

Der Operator delegate erstellt eine anonyme Methode, die in einen Delegattyp konvertiert werden kann:The delegate operator creates an anonymous method that can be converted to a delegate type:

Func<int, int, int> sum = delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(3, 4));  // output: 7

Hinweis

Ab C# 3 bieten Lambdaausdrücke eine präzisere und aussagekräftigere Möglichkeit zum Erstellen anonymer Funktionen.Beginning with C# 3, lambda expressions provide a more concise and expressive way to create an anonymous function. Verwenden Sie den Operator „=>“, um einen Lambdaausdruck zu erstellen:Use the => operator to construct a lambda expression:

Func<int, int, int> sum = (a, b) => a + b;
Console.WriteLine(sum(3, 4));  // output: 7

Weitere Informationen zu Features von Lambdaausdrücken (etwa zum Erfassen äußerer Variablen) finden Sie unter Lambdaausdrücke.For more information about features of lambda expressions, for example, capturing outer variables, see Lambda expressions.

Bei Verwendung des Operators delegate können Sie die Parameterliste weglassen.When you use the delegate operator, you might omit the parameter list. Die erstellte anonyme Methode kann dann mit einer beliebigen Parameterliste in einen Delegattyp konvertiert werden, wie im folgenden Beispiel zu sehen:If you do that, the created anonymous method can be converted to a delegate type with any list of parameters, as the following example shows:

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!

Dies ist die einzige Funktion anonymer Methoden, die von Lambdaausdrücken nicht unterstützt wird.That's the only functionality of anonymous methods that is not supported by lambda expressions. In allen anderen Fällen ist ein Lambdaausdruck eine bevorzugte Methode zum Schreiben von Inlinecode.In all other cases, a lambda expression is a preferred way to write inline code.

Zum Deklarieren eines delegateDelegattyps wird auch das Schlüsselwort verwendet.You also use the delegate keyword to declare a delegate type.

C#-SprachspezifikationC# language specification

Weitere Informationen finden Sie im Abschnitt Anonyme Funktionsausdrücke der C#-Sprachspezifikation.For more information, see the Anonymous function expressions section of the C# language specification.

Weitere InformationenSee also