람다 식(=>
) 연산자는 람다 식을 정의합니다.
=>
토큰은 람다 연산자와 식 본문 정의의 멤버 이름과 멤버 구현의 구분자라는 두 가지 형식으로 지원됩니다.
람다 연산자
람다 식에서 람다 연산자 =>
은 왼쪽의 입력 매개 변수를 오른쪽의 람다 본문과 구분합니다.
다음 예제에서는 메서드 구문이 포함된 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# 언어 사양의 익명 함수 식 섹션을 참조하세요.
참고 항목
.NET