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

Die => -Operator kann auf zwei Weisen in c# verwendet werden:The => operator can be used in two ways in C#:

Lambda-operatorLambda 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  
}  

Definition des Ausdrucks TextExpression body definition

Eine Definition des Ausdrucks Text stellt die Implementierung eines Members in einer stark komprimierten können lesbare Form bereit.An expression body definition provides a member's implementation in a highly condensed, readable form. Es hat 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 Ausdruck kann eine Anweisungsausdruck nur, wenn das Element den Rückgabetyp des Typs ist void, oder wenn das Element einen Konstruktor oder einen 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.

Ausdruckstextdefinitionen für Methoden und die Eigenschaft "Get"-Anweisungen werden beginnend mit c# 6 unterstützt.Expression body definitions for methods and property get statements are supported starting with C# 6. Ausdruckstextdefinitionen für Konstruktoren Finalizer, Eigenschaftensatz-Anweisungen und Indexer werden beginnend mit C#-7 unterstützt.Expression body definitions for constructors, finalizers, property set statements, and indexers are supported starting with C# 7.

Im folgenden finden Sie eine Definition des Ausdrucks Text für ein Person.ToString Methode:The following is an expression body definition for a Person.ToString method:

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

Es ist eine kurznotationsversion die folgende Methodendefinition:It is a shorthand version of the following method definition:

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

Ausführlichere Informationen zu ausdruckstextdefinitionen finden Sie unter Ausdruck ohne Text Mitglieder.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
Elemente ohne Text Ausdruck.Expression-bodied members.