Movatterモバイル変換


[0]ホーム

URL:


Skip to main content

This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Download Microsoft EdgeMore info about Internet Explorer and Microsoft Edge
Table of contentsExit focus mode

Lambda expression (=>) operator defines a lambda expression

  • 2025-02-19
Feedback

In this article

The=> token is supported in two forms: as thelambda operator and as a separator of a member name and the member implementation in anexpression body definition.

Lambda operator

Inlambda expressions, the lambda operator=> separates the input parameters on the left side from the lambda body on the right side.

The following example uses theLINQ feature with method syntax to demonstrate the usage of lambda expressions:

string[] words = { "bot", "apple", "apricot" };int minimalLength = words  .Where(w => w.StartsWith("a"))  .Min(w => w.Length);Console.WriteLine(minimalLength);   // output: 5int[] numbers = { 4, 7, 10 };int product = numbers.Aggregate(1, (interim, next) => interim * next);Console.WriteLine(product);   // output: 280

Input parameters of a lambda expression are strongly typed at compile time. When the compiler can infer the types of input parameters, like in the preceding example, you can omit type declarations. If you need to specify the type of input parameters, you must do that for each parameter, as the following example shows:

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

The following example shows how to define a lambda expression without input parameters:

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

For more information, seeLambda expressions.

Expression body definition

An expression body definition has the following general syntax:

member => expression;

Whereexpression is a valid expression. The return type ofexpression must be implicitly convertible to the member's return type. If the member:

  • Has avoid return type or
  • Is a:
    • Constructor
    • Finalizer
    • Property or indexerset accessor

expression must be astatement expression. Because the expression's result is discarded, the return type of that expression can be any type.

The following example shows an expression body definition for aPerson.ToString method:

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

It's a shorthand version of the following method definition:

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

You can create expression body definitions for methods, operators, read-only properties, constructors, finalizers, and property and indexer accessors. For more information, seeExpression-bodied members.

Operator overloadability

The=> operator can't be overloaded.

C# language specification

For more information about the lambda operator, see theAnonymous function expressions section of theC# language specification.

See also

Collaborate with us on GitHub
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, seeour contributor guide.

Feedback

Was this page helpful?

YesNo

In this article

Was this page helpful?

YesNo