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

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

C# 언어 참조는 가장 최근에 릴리스된 C# 언어 버전을 문서화합니다. 또한 예정된 언어 릴리스의 공개 미리 보기 기능에 대한 초기 설명서도 포함되어 있습니다.

설명서는 언어의 마지막 세 버전 또는 현재 공개 미리 보기에서 처음 도입된 기능을 식별합니다.

팁 (조언)

C#에서 기능이 처음 도입된 시기를 찾으려면 C# 언어 버전 기록에 대한 문서를 참조하세요.

람다 연산자

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

다음 예제에서는 메서드 구문과 함께 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;

값을 반환하는 멤버의 경우 식의 결과는 멤버의 반환 형식으로 암시적으로 변환할 수 있어야 합니다. void 멤버, 생성자, 종료자 또는 set, 또는 removeinitadd접근자의 경우 본문은 문 식이어야 합니다. 문 식은 대입, 메서드 호출, 개체 만들기, 증가 또는 감소 작업 또는 await 식일 수 있습니다. 결과가 있는 경우 삭제됩니다.

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

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

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

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

다음 멤버에 대해 식 본문 정의를 사용할 수 있습니다.

  • 메서드 및 로컬 함수: 값을 반환하는 멤버에는 형식 T M() => expression;이 있습니다. 멤버에 void 양식 void M() => statementExpression;이 있습니다. 자세한 내용은 메서드로컬 함수를 참조하세요.
  • 연산자: 연산자에는 형식 public static T operator +(T left, T right) => expression;이 있습니다. 자세한 내용은 연산자 오버로드를 참조하세요.
  • 속성 및 인덱서: 읽기 전용 속성 또는 인덱서에 폼 T P => expression; 또는 T this[int i] => expression;. 개별 접근자에 식 본문을 사용할 수도 있습니다. get 접근자에는 형식get => expression;이 있습니다. A set 또는 init 접근자에는 폼 set => statementExpression; 또는 init => statementExpression;. 자세한 내용은 속성인덱서를 참조하세요.
  • 생성자 및 종료자: 이러한 멤버에는 폼 C() => statementExpression; 또는 ~C() => statementExpression;. 자세한 내용은 생성자종료자를 참조하세요.
  • 이벤트 접근자:add 또는 접근자의 형식 add => statementExpression; 또는 removeremove => statementExpression;. 자세한 내용은 이벤트참조하세요.

연산자 오버로드 가능성

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

C# 언어 사양

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

참고하십시오

  • C# 연산자 및 식