Section 3.14: => Lambda 연산자
버전 ≥ 3.0
=>
연산자는 대입 연산자인 =
와 동일한 우선 순위를 가지며 우측 우선 결합 (right-associative) 방식으로 동작한다.
이는 lambda 표현식 (expression) 을 선언하기 위해 사용되며 LINQ 쿼리들과 함께 널리 사용된다:
string[] words = { "cherry", "apple", "blueberry" };
int shortestWordLength = words.Min((string w) => w.Length); // 5
LINQ extension 이나 쿼리에서 사용 시 객체 (object) 의 타입은 컴파일러에 의해 추론될 수 있으므로 종종 생략된다:
int shortestWordLength = words.Min(w => w.Length); //컴파일되어 동일한 결과를 출력한다
일반적으로 lambda 연산자는 다음과 같은 형태를 가지게 된다:
(input parameters) => expression
lambda 표현식의 파라미터들은 =>
연산자 앞에 기술되며, 실제 실행될 표현식/구문/블럭 등은 연산자 오른쪽에 기술된다:
// 표현식
(int x, string s) => s.Length > x
// 표현식
(int x, int y) => x + y
// 구문
(string x) => Console.WriteLine(x)
// 블럭
(string x) => {
x += " says Hello!";
Console.WriteLine(x);
}
이 연산자는 손쉽게 delegate 를 정의하기 위해 사용될 수 있으며, 이러한 경우 명시적인 메소드를 별도로 작성할 필요가 없다:
delegate void TestDelegate(string s);
TestDelegate myDelegate = s => Console.WriteLine(s + " World");
myDelegate("Hello");
아래의 경우와 비교해본다:
void MyMethod(string s)
{
Console.WriteLine(s + " World");
}
delegate void TestDelegate(string s);
TestDelegate myDelegate = MyMethod;
myDelegate("Hello");
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
3.16: 클래스 멤버 연산자들: Null 조건부 요소 액세스 (0) | 2020.11.10 |
---|---|
3.15: 클래스 멤버 연산자들: Null 조건부 멤버 액세스 (0) | 2020.11.10 |
3.13: 비트 시프트 (Bit-Shifting) 연산자 (0) | 2020.11.06 |
3.12: ?? Null 병합 (coalescing) 연산자 (0) | 2020.11.06 |
3.11: sizeof (0) | 2020.11.05 |