람다 식(
토큰은 =>람다 연산 자와 멤버 이름의 구분 기호 및 식 본문 정의의 멤버 구현의 두 가지 형식으로 지원됩니다.
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;이 있습니다. Aset또는init접근자에는 폼set => statementExpression;또는init => statementExpression;. 자세한 내용은 속성 및 인덱서를 참조하세요. -
생성자 및 종료자: 이러한 멤버에는 폼
C() => statementExpression;또는~C() => statementExpression;. 자세한 내용은 생성자 및 종료자를 참조하세요. -
이벤트 접근자:
add또는 접근자의 형식add => statementExpression;또는removeremove => statementExpression;. 자세한 내용은 이벤트참조하세요.
연산자 오버로드 가능성
연산자를 오버로드할 => 수 없습니다.
C# 언어 사양
람다 연산자에 대한 자세한 내용은 C# 언어 사양의 익명 함수 식 섹션을 참조하세요.
참고하십시오
- C# 연산자 및 식
.NET