Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lambda-uttrycksoperatorn (
Token => stöds i två former: som lambdaoperator och som avgränsare för ett medlemsnamn och medlemsimplementeringen i en uttryckstextdefinition.
Lambdaoperatör
I lambda-uttryck separerar lambda-operatorn => indataparametrarna på vänster sida från lambdakroppen på höger sida.
I följande exempel används LINQ-funktionen med metodsyntax för att demonstrera användningen av lambda-uttryck:
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
Inmatningsparametrar för ett lambda-uttryck har stark typning vid kompileringstillfället. När kompilatorn kan härleda typerna av indataparametrar, som i föregående exempel, kan du utelämna typdeklarationer. Om du behöver ange typen av indataparametrar måste du göra det för varje parameter, som följande exempel visar:
int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (int interim, int next) => interim * next);
Console.WriteLine(product);   // output: 280
I följande exempel visas hur du definierar ett lambda-uttryck utan indataparametrar:
Func<string> greet = () => "Hello, World!";
Console.WriteLine(greet());
Mer information finns i Lambda-uttryck.
Definition av uttrycksbaserad kropp
En uttryckstextdefinition har följande allmänna syntax:
member => expression;
Var expression är ett giltigt uttryck. Returtypen expression måste implicit konverteras till medlemmens returtyp. Om medlemmen:
- Har en voidreturtyp eller
- Är en: - Konstruktor
- Finaliserare
- Egenskaps- eller indexerare setaccessor
 
              expression måste vara ett instruktionsuttryck. Eftersom uttryckets resultat ignoreras kan returtypen för uttrycket vara vilken typ som helst.
I följande exempel visas en uttryckstextdefinition för en Person.ToString metod:
public override string ToString() => $"{fname} {lname}".Trim();
Det är en kortfattad version av följande metoddefinition:
public override string ToString()
{
   return $"{fname} {lname}".Trim();
}
Du kan skapa uttryckstextdefinitioner för metoder, operatorer, skrivskyddade egenskaper, konstruktorer, finalizer och egenskaps- och indexåtkomstmetoder. Mer information finns i Uttrycksbaserade medlemmar.
Överlagring av operator
Operatorn => kan inte överbelastas.
Språkspecifikation för C#
Mer information om lambda-operatorn finns i avsnittet Anonyma funktionsuttryck i C#-språkspecifikationen.