=> operátor (Referenční příručka jazyka C#)

Token je podporován ve dvou podobách: jako operátor lambda a jako oddělovač názvu členu a implementace členu => v definici těla výrazu.

Operátor lambda

Ve výrazech lambdaodděluje operátor lambda vstupní parametry na levé straně => od těla lambda na pravé straně.

Následující příklad používá funkci LINQ se syntaxí metody k předvedení použití výrazů lambda:

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

Vstupní parametry výrazu lambda jsou v době kompilace silného typu. Pokud kompilátor může odvodit typy vstupních parametrů, jako v předchozím příkladu, můžete vynechat deklarace typu. Pokud potřebujete zadat typ vstupních parametrů, musíte to udělat pro každý parametr, jak ukazuje následující příklad:

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

Následující příklad ukazuje, jak definovat výraz lambda bez vstupních parametrů:

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

Další informace najdete v tématu Výrazy lambda.

Definice textu výrazu

Definice textu výrazu má následující obecnou syntaxi:

member => expression;

kde expression je platný výraz. Návratový typ expression musí být implicitně převoditelný na návratový typ členu. Pokud člen:

  • void návratový typ nebo
  • Je:
    • Konstruktor
    • Finalizační metoda
    • Přístupový objekt vlastnosti set nebo indexeru

expression musí být výraz příkazu. Vzhledem k tomu, že je výsledek výrazu zahozen, návratový typ tohoto výrazu může být libovolný typ.

Následující příklad ukazuje definici těla výrazu pro Person.ToString metodu:

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

Jedná se o zkrácenou verzi následující definice metody:

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

Počínaje jazykem C# 6 se podporují definice textu výrazu pro metody, operátory a vlastnosti jen pro čtení. Počínaje jazykem C# 7.0 se podporují definice textu výrazu pro konstruktory, finalizační metody a přístupové objekty vlastností a indexerů.

Další informace najdete v tématu Členové s výrazy.

Přetížení operátoru

Operátor => nelze přetížit.

specifikace jazyka C#

Další informace o operátoru lambda najdete v části Anonymní výrazy funkce specifikace jazyka C#.

Viz také