=>-Operator (C#-Referenz)=> Operator (C# Reference)

Der =>-Operator kann durch zwei Methoden in C# verwendet werden:The => operator can be used in two ways in C#:

LambdaoperatorLambda operator

Das =>-Token wird als Lambdaoperator bezeichnet.The => token is called the lambda operator. Es wird in Lambdaausdrücken verwendet, um die Eingabevariablen auf der linken Seite vom Lambdatext auf der rechten Seite zu trennen.It is used in lambda expressions to separate the input variables on the left side from the lambda body on the right side. Lambdaausdrücke sind mit anonymen Methoden vergleichbare Inlineausdrücke, sie sind aber flexibler. Sie werden häufig in LINQ-Abfragen verwendet, die in Methodensyntax ausgedrückt werden.Lambda expressions are inline expressions similar to anonymous methods but more flexible; they are used extensively in LINQ queries that are expressed in method syntax. Weitere Informationen finden Sie unter Lambdaausdrücke.For more information, see Lambda Expressions.

Das folgende Beispiel zeigt zwei Methoden zum Suchen und Anzeigen der Länge der kürzesten Zeichenfolge in einem Array von Zeichenfolgen.The following example shows two ways to find and display the length of the shortest string in an array of strings. Im ersten Teil des Beispiels wird ein Lambdaausdruck (w => w.Length) auf jedes Element des words-Arrays angewendet, und dann wird die Min-Methode verwendet, um die kleinste Länge zu finden.The first part of the example applies a lambda expression (w => w.Length) to each element of the words array and then uses the Min method to find the smallest length. Zum Vergleich zeigt der zweite Teil des Beispiels eine längere Lösung, bei der Abfragesyntax verwendet wird, um das gleiche zu erreichen.For comparison, the second part of the example shows a longer solution that uses query syntax to do the same thing.

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  

HinweiseRemarks

Der Operator => verfügt über die gleiche Rangfolge wie der Zuweisungsoperator (=) und ist rechtsassoziativ.The => operator has the same precedence as the assignment operator (=) and is right-associative.

Sie können den Typ der Eingabevariable explizit angeben oder vom Compiler ableiten lassen; in jedem Fall ist die Variable zur Kompilierzeit stark typisiert.You can specify the type of the input variable explicitly or let the compiler infer it; in either case, the variable is strongly typed at compile time. Wenn Sie einen Typ angeben, müssen Sie den Typnamen und den Variablennamen wie im folgenden Beispiel gezeigt in Klammern setzen.When you specify a type, you must enclose the type name and the variable name in parentheses, as the following example shows.

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

BeispielExample

Im folgenden Beispiel wird gezeigt, wie ein Lambdaausdruck für die Überladung des Standardabfrageoperators Enumerable.Where geschrieben wird, der zwei Argumente akzeptiert.The following example shows how to write a lambda expression for the overload of the standard query operator Enumerable.Where that takes two arguments. Da der Lambda-Ausdruck über mehr als einen Parameter verfügt, müssen die Parameter in Klammern stehen.Because the lambda expression has more than one parameter, the parameters must be enclosed in parentheses. Der zweite Parameter index stellt den Index des aktuellen Elements in der Auflistung dar.The second parameter, index, represents the index of the current element in the collection. Der Where-Ausdruck gibt alle Zeichenfolgen zurück, deren Länge ihre jeweilige Indexposition im Array unterschreitet.The Where expression returns all the strings whose lengths are less than their index positions in the array.

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);  
    }  

    // Output:  
    // Example that uses a lambda expression:  
    // five  
    // six  
    // seven  
    // eight  
    // nine  
}  

AusdruckskörperdefinitionExpression body definition

Eine Ausdruckskörperdefinition ermöglicht die Implementierung eines Members in einer sehr präzisen und lesbaren Form.An expression body definition provides a member's implementation in a highly condensed, readable form. Sie verwendet die folgende allgemeine Syntax:It has the following general syntax:

member => expression;

wobei expression ein gültiger Ausdruck ist.where expression is a valid expression. Beachten Sie, dass expression nur dann ein Anweisungsausdruck sein kann, wenn der Rückgabetyp des Members void ist oder der Member ein Konstruktor oder Finalizer ist.Note that expression can be a statement expression only if the member's return type is void, or if the member is a constructor or a finalizer.

Ausdruckskörperdefinitionen für Methoden und die Get-Anweisungen der Eigenschaft werden ab C# 6 unterstützt.Expression body definitions for methods and property get statements are supported starting with C# 6. Ausdruckskörperdefinitionen für Konstruktoren, Finalizer, Set-Anweisungen der Eigenschaft und Indizes werden ab C# 7 unterstützt.Expression body definitions for constructors, finalizers, property set statements, and indexers are supported starting with C# 7.

Im Folgenden wird eine Ausdruckskörperdefinition für eine Person.ToString-Methode angegeben:The following is an expression body definition for a Person.ToString method:

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

Diese ist eine kompakte Version der folgenden Methodendefinition:It is a shorthand version of the following method definition:

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

Ausführlichere Informationen zu Ausdruckskörperdefinitionen finden Sie unter Ausdruckskörpermember.For more detailed information on expression body definitions, see Expression-bodied members.

Siehe auchSee Also

C#-Referenz C# Reference
C#-Programmierhandbuch C# Programming Guide
Lambda-Ausdrücke Lambda Expressions
AusdruckskörpermemberExpression-bodied members.