람다 식(=>) 연산자는 람다 식을 정의합니다.

=> 토큰은 람다 연산자식 본문 정의의 멤버 이름과 멤버 구현의 구분자라는 두 가지 형식으로 지원됩니다.

람다 연산자

람다 식에서 람다 연산자 =>은 왼쪽의 입력 매개 변수를 오른쪽의 람다 본문과 구분합니다.

다음 예제에서는 메서드 구문이 포함된 LINQ 기능을 사용하여 람다 식의 사용법을 보여줍니다.

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

람다 식의 입력 매개 변수는 컴파일 시 강력한 형식을 지정합니다. 위의 예제와 같이 컴파일러가 입력 매개 변수의 형식을 추론하는 경우, 형식 선언을 생략할 수 있습니다. 입력 매개 변수의 형식을 지정해야 하는 경우 다음 예제와 같이 각 매개 변수에 대해 입력매개 변수를 지정해야 합니다.

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

다음 예제에서는 입력 매개 변수 없이 람다 식을 정의하는 방법을 보여줍니다.

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

자세한 내용은 람다 식을 참조하세요.

식 본문 정의

식 본문 정의의 일반 구문은 다음과 같습니다.

member => expression;

여기서 expression은(는) 유효한 식입니다. expression의 반환 형식은 구성원의 반환 형식으로 암시적으로 변환할 수 있어야 합니다. 멤버인 경우:

  • void 반환 형식 존재, 또는
  • 다음과 같습니다.
    • 생성자
    • Finalizer
    • 속성 또는 인덱서 set 접근자

expression문(statement) 식이어야 합니다. 식의 결과는 삭제되므로 해당 식의 반환 형식은 어떤 형식도 될 수 있습니다.

다음 예제에서는 Person.ToString 메서드에 대한 식 본문 정의를 보여줍니다.

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

다음과 같은 메서드 정의의 약식 버전입니다.

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

메서드, 연산자, 읽기 전용 속성, 생성자, 종료자, 속성 및 인덱서 접근자에 대한 식 본문 정의를 만들 수 있습니다. 자세한 내용은 식 본문 멤버를 참조하세요.

연산자 오버로드 가능성

=> 연산자는 오버로드할 수 없습니다.

C# 언어 사양

람다 연산자에 대한 자세한 내용은 C# 언어 사양익명 함수 식 섹션을 참조하세요.

참고 항목