람다 식(
토큰은 =>
람다 연산 자와 멤버 이름의 구분 기호 및 식 본문 정의의 멤버 구현의 두 가지 형식으로 지원됩니다.
람다 연산자
람다 식에서 람다 연산 =>
자는 왼쪽의 입력 매개 변수를 오른쪽의 람다 본문과 구분합니다.
다음 예제에서는 메서드 구문과 함께 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
- 다음과 같습니다.
- 생성자
- 파이널라이저
- 속성 또는 인덱서의 접근자
set
expression
는 문 식이어야 합니다. 식의 결과가 삭제되므로 해당 식의 반환 형식은 모든 형식일 수 있습니다.
다음 예제에서는 메서드에 대한 식 본문 정의를 보여 줍니다 Person.ToString
.
public override string ToString() => $"{fname} {lname}".Trim();
다음 메서드 정의의 약식 버전입니다.
public override string ToString()
{
return $"{fname} {lname}".Trim();
}
메서드, 연산자, 읽기 전용 속성, 생성자, 종료자, 속성 및 인덱서 접근자에 대한 식 본문 정의를 만들 수 있습니다. 자세한 내용은 식 본문 멤버를 참조하십시오.
연산자 오버로드 가능성
연산자는 =>
오버로드할 수 없습니다.
C# 언어 사양
람다 연산자에 대한 자세한 내용은 C# 언어 사양의 익명 함수 식 섹션을 참조하세요.
참고하십시오
- C# 연산자 및 식
.NET