De operator Lambda-expressie (=>) definieert een lambda-expressie

Het => token wordt in twee vormen ondersteund: als de lambda-operator en als scheidingsteken van een lidnaam en de implementatie van het lid in een definitie van de expressietekst.

Lambda-operator

In lambda-expressies scheidt de lambda-operator => de invoerparameters aan de linkerkant van de lambda-body aan de rechterkant.

In het volgende voorbeeld wordt de LINQ-functie met methodesyntaxis gebruikt om het gebruik van lambda-expressies te demonstreren:

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

Invoerparameters van een lambda-expressie worden sterk getypt tijdens het compileren. Wanneer de compiler de typen invoerparameters kan afleiden, zoals in het vorige voorbeeld, kunt u typedeclaraties weglaten. Als u het type invoerparameters moet opgeven, moet u dat voor elke parameter doen, zoals in het volgende voorbeeld wordt weergegeven:

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

In het volgende voorbeeld ziet u hoe u een lambda-expressie zonder invoerparameters definieert:

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

Zie Lambda-expressies voor meer informatie.

Hoofdtekstdefinitie van expressie

Een definitie van de hoofdtekst van een expressie heeft de volgende algemene syntaxis:

member => expression;

waar expression is een geldige expressie. Het retourtype expression moet impliciet worden omgezet in het retourtype van het lid. Als het lid:

  • Heeft een void retourtype of
  • Is een:
    • Constructor
    • Finalizer
    • Accessor voor eigenschappen of indexeerfuncties set

expressionmoet een instructieexpressie zijn. Omdat het resultaat van de expressie wordt verwijderd, kan het retourtype van die expressie elk type zijn.

In het volgende voorbeeld ziet u een definitie van de hoofdtekst van een expressie voor een Person.ToString methode:

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

Het is een verkorte versie van de volgende methodedefinitie:

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

U kunt hoofdtekstdefinities voor expressies maken voor methoden, operators, alleen-lezeneigenschappen, constructors, finalizers en eigenschaps- en indexeerfuncties. Zie Expressie-lichaamsleden voor meer informatie.

Overbelasting van operatoren

De => operator kan niet worden overbelast.

C#-taalspecificatie

Zie de sectie Anonieme functie-expressies van de C#-taalspecificatie voor meer informatie over de lambda-operator.

Zie ook