Freigeben über


Der Lambda-Ausdruck (=>)-Operator definiert einen Lambda-Ausdruck.

Das => Token wird in zwei Formen unterstützt: als Lambda-Operator und als Trennzeichen eines Membernamens und der Memberimplementierung in einer Ausdruckstextdefinition.

Lambda-Operator

In Lambda-Ausdrücken trennt der Lambda-Operator=> die Eingabeparameter auf der linken Seite vom Lambda-Textkörper auf der rechten Seite.

Im folgenden Beispiel wird das LINQ-Feature mit Methodensyntax verwendet, um die Verwendung von Lambda-Ausdrücken zu veranschaulichen:

string[] words = { "bot", "apple", "apricot" };
int minimalLength = words
  .Where(w => w.StartsWith("a"))
  .Min(w => w.Length);
Console.WriteLine(minimalLength);   // output: 5

int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (interim, next) => interim * next);
Console.WriteLine(product);   // output: 280

Eingabeparameter eines Lambda-Ausdrucks werden zur Kompilierungszeit stark eingegeben. Wenn der Compiler die Typen von Eingabeparametern ableiten kann, wie im vorherigen Beispiel, können Sie Typdeklarationen weglassen. Wenn Sie den Typ der Eingabeparameter angeben müssen, müssen Sie dies für jeden Parameter tun, wie im folgenden Beispiel gezeigt:

int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (int interim, int next) => interim * next);
Console.WriteLine(product);   // output: 280

Das folgende Beispiel zeigt, wie Sie einen Lambda-Ausdruck ohne Eingabeparameter definieren:

Func<string> greet = () => "Hello, World!";
Console.WriteLine(greet());

Weitere Informationen finden Sie unter Lambda-Ausdrücke.

Ausdruckstextdefinition

Eine Ausdruckstextdefinition hat die folgende allgemeine Syntax:

member => expression;

Dabei expression handelt es sich um einen gültigen Ausdruck. Der Rückgabetyp expression muss implizit in den Rückgabetyp des Mitglieds konvertierbar sein. Wenn das Mitglied:

  • Hat einen void Rückgabetyp oder
  • Ist ein:
    • Konstruktor
    • Finalizer
    • Accessor für Eigenschaft oder Indexer set

expression muss ein Anweisungsausdruck sein. Da das Ergebnis des Ausdrucks verworfen wird, kann der Rückgabetyp dieses Ausdrucks beliebiger Typ sein.

Das folgende Beispiel zeigt eine Ausdruckstextdefinition für eine Person.ToString Methode:

public override string ToString() => $"{fname} {lname}".Trim();

Dies ist eine Kurzversion der folgenden Methodendefinition:

public override string ToString()
{
   return $"{fname} {lname}".Trim();
}

Sie können Ausdruckstextdefinitionen für Methoden, Operatoren, schreibgeschützte Eigenschaften, Konstruktoren, Finalizer und Eigenschaften- und Indexer-Accessoren erstellen. Weitere Informationen finden Sie unter Ausdruckskörper.For more information, see Expression-bodied members.

Überlastbarkeit des Operators

Der => Operator kann nicht überladen werden.

C#-Sprachspezifikation

Weitere Informationen zum Lambda-Operator finden Sie im Abschnitt "Anonyme Funktionsausdrücke" der C#-Sprachspezifikation.

Siehe auch