Freigeben über


Operator => (C#-Referenz)

Das =>-Token wird als Operator Lambda bezeichnet. Es wird in Lambda-Ausdrücken verwendet, um die Eingabevariablen auf der linken Seite von dem Lambda-Text auf der rechten Seite zu trennen. Bei Lambda-Ausdrücken handelt es sich um Inlineausdrücke, die anonymen Methoden ähneln, jedoch flexibler sind. Sie werden häufig in LINQ-Abfragen in Methodensyntax verwendet. Weitere Informationen finden Sie unter Lambda-Ausdrücke (C#-Programmierhandbuch).

Im folgenden Beispiel werden zwei Möglichkeiten veranschaulicht, die Länge der kürzesten Zeichenfolge in einem Zeichenfolgenarray zu suchen und anzuzeigen. Der erste Teil des Beispiels wird ein Lambda-Ausdruck (w => w.Length) auf jedes Element des Arrays words und verwendet dann die Min``1-Methode, um die kleinste Länge zu suchen. Für Vergleich zeigt der zweite Teil des Beispiels eine längere Lösung an, die Abfragesyntax verwendet, um die gleichen Schritt auszuführen.

string[] words = { "cherry", "apple", "blueberry" };

// Use method syntax to apply a lambda expression to each element
// of the words array. 
int shortestWordLength = words.Min(w => w.Length);
Console.WriteLine(shortestWordLength);

// Compare the following code that uses query syntax.
// Get the lengths of each word in the words array.
var query = from w in words
            select w.Length;
// Apply the Min method to execute the query and get the shortest length.
int shortestWordLength2 = query.Min();
Console.WriteLine(shortestWordLength2);

// Output: 
// 5
// 5

Hinweise

Der Operator => verfügt über die gleiche Rangfolge wie der Zuweisungsoperator (=) und ist rechtsassoziativ.

Sie können den Typ der Eingabevariable explizit angeben oder lassen den Compiler ihn ableiten; in jedem Fall ist die Variable zur Kompilierzeit stark typisiert. Wenn Sie einen Typ angeben, müssen Sie den Typnamen und den Variablennamen in Klammern im folgenden Beispiel gezeigt, einschließen.

int shortestWordLength = words.Min((string w) => w.Length);

Beispiel

Im folgenden Beispiel wird gezeigt, wie ein Lambda-Ausdruck für die Überladung des Standardabfrageoperators Enumerable.Where``1 geschrieben wird, der zwei Argumente akzeptiert. Da der Lambda-Ausdruck mehr als einen - Parameter verfügt, müssen die Parameter in Klammern stehen. Der zweite Parameter, index, stellt den Index des aktuellen Elements in der Auflistung dar. Der Where Ausdruck gibt alle Zeichenfolgen, deren Länge kleiner sind, als ihre Indexpositionen im Array zurück.

static void Main(string[] args)
{
    string[] digits = { "zero", "one", "two", "three", "four", "five", 
            "six", "seven", "eight", "nine" };

    Console.WriteLine("Example that uses a lambda expression:");
    var shortDigits = digits.Where((digit, index) => digit.Length < index);
    foreach (var sD in shortDigits)
    {
        Console.WriteLine(sD);
    }

    // Compare the following code, which arrives at the same list of short
    // digits but takes more work to get there.
    Console.WriteLine("\nExample that uses a for loop:");
    List<string> shortDigits2 = new List<string>();
    for (var i = 0; i < digits.Length; i++)
    {
        if (digits[i].Length < i)
            shortDigits2.Add(digits[i]);
    }

    foreach (var d in shortDigits2)
    {
        Console.WriteLine(d);
    }
    // Output:
    // Example that uses a lambda expression:
    // five
    // six
    // seven
    // eight
    // nine

    // Example that uses a for loop:
    // five
    // six
    // seven
    // eight
    // nine
}

Siehe auch

Referenz

Lambda-Ausdrücke (C#-Programmierhandbuch)

Konzepte

C#-Programmierhandbuch

Weitere Ressourcen

C#-Referenz