C#
C# => 람다식 (Lambda Expression)

C# 3.0부터 지원하는 => 연산자는 C#에서 람다식(Lambda Expression)을 표현할 때 사용한다. 람다식은 무명 메서드와 비슷하게 무명 함수(anonymous function)를 표현하는데 사용된다. 람다식은 아래와 같이 입력 파라미터(0개 ~ N개)를 => 연산자 왼쪽에, 실행 문장들을 => 연산자 오른쪽에 둔다.


예를 들어 하나의 문자열을 받아 들여 메시지 박스를 띄운다면 다음과 같이 간단히 쓸 수 있다.


입력 파라미터는 하나도 없는 경우부터 여러 개 있는 경우가 있다. 다음 예제는 파라미터가 없는 경우, 한개 있는 경우, 두개 있는 경우를 예시한 것이다. 마지막 예는 입력 파라미터의 타입이 모호한 경우 이를 써줄 수 있음을 예시한 것이다. 일반적으로 입력타입은 컴파일러가 알아서 찾아낸다.

예제

// 입력 파라미터가 없는 경우
() => Write("No");

// 입력 파라미터가 1~2개 있는 경우
(p) => Write(p);
(s, e) => { Write(s); Write(e); }

// 입력 파라미터 타입을 명시하는 경우
(string s, int i) => Write(s, i);


람다식(Lambda Expression)을 이용하면 이전 아티클에 소개한 delegate무명 메서드를 더 간략히 표현할 수 있다. 예를 들어 다음과 같은 Click 이벤트는 이벤트 핸들러 메서드인 button1_Click를 추가하고 있는데, 그래서 메서드 button1_Click은 해당 클래스 내 어딘가에 정의되어 있어야 한다.


위의 new System.EventHandler(button1_Click)은 간단히 button1_Click 메서드명만 사용하여 아래와 같이 줄일 수 있다.


이를 좀더 간단하려면 아래와 같이 무명 메서드(Anonymous Method)를 써서 표현할 수 있다.


그리고 람다식을 사용하면 이를 더 간단히 다음과 같이 바꿀 수 있다. 람다식의 오른쪽 실행 블럭이 한 문장일 때는 { } 괄호를 생략할 수 있다. 아래 식은 무명 메서드를 쉽게 람다식으로 변경한 간단한 예이다.

예제

// 간단한 이벤트핸들러를 람다식으로 표현한 경우

this.button1.Click += (sender, e) => ((Button)sender).BackColor = Color.Red;



람다식(Lambda Expression)은 .NET Framework의 여러 곳에서 사용되지만, 특히 LINQ (Language Integrated Query) 에서 많이 사용된다. LINQ는 별도의 주제이지만 간단한 예를 들면, 아래는 람다식이 LINQ의 Where 쿼리 안에서 사용된 예이다.

예제

// LINQ Where() 메서드 안에서 사용된 람다식

var projs = db.Projects.Where(p => p.Name == strName);




본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.




Comment be_victorious@*** 3/5/2020 2:14:03 AM
Comment admin@*** 3/5/2020 4:15:06 AM
Comment be_victorioius@*** 3/5/2020 4:41:42 AM
Comment be_victorious@*** 3/5/2020 4:47:18 AM
Comment admin@*** 3/5/2020 4:53:37 AM