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/

반응형

+ Recent posts