상세 컨텐츠

본문 제목

[c# 키워드] Lambda Expression =>

C#

by 메타샤워 2023. 7. 18. 18:36

본문

C# 3.0 부터 지원하는 => 연산자는 C#에서 람다식 (Lambda Expression) 을 표현할 때 사용한다. 

람다 식은 무명 메서드와 비슷하게 무명함수  (Anonymous Func)를 표현하는데 사용된다.
람다 식은 아래와 같이 입력 파라미터 ( 0개 ~ N개 )를 => 연산자 왼쪽에, 실행 문장들을 오른 쪽이 둔다.
 
람다 Syntax :  ( 입력 파라미터) => { 문장 블럭 } ;
 
예를 들어 하나의 문자열을 받아 들여 메시지 박스를 띄운다면 다음과 같이 간단히 쓸 수 있다.
str => {MessageBox.show(str);}
 
입력 파라미터는 하나도 없는 경우부터 여러 개 있는 경우가 있다.
다음 예는 파라미터가 없는 케이스 부터 두개 있는 케이스 까지 보여준다. 
마지막 예는 입력 파라미터의 타입이 애매한 경우 이를 써줄 수 있음을 보여준다.
일반적으로 입력 타입은 컴파일러가 알아서 찾아낸다.

 

() => Write( " NO " );  
(p) => Write( p );  
( s , e ) => Write( e );  
( string s , int i ) => Write( s , i );
 
Lambda Expression 을 이용하면 delegate / 무명 메서드를 더 간략히 표현할 수 있다.
예를 들어 다음과 같은 Click 이벤트는 이벤트 핸들러 메서드인 button1_Click을 가리키고 있다.
그래서 메서드 button1_Click은 해당 클래스내 어딘가 정의되어 있어야 한다.
 
this.button1.Click += new System.EventHandler(button1_Click);  
  
private void button1_Click(object sender, EventArgs e)  
{  
   ((Button)sender).BackColor = Color.Red;  
}
 
그리고 람다식을 사용하면 이를 더 간단히 다음과 같이 바꿀 수 있다. 
람다 식의 오른쪽 실행 블러이 한문장일떄는  { } 괄호를 생략할 수 있다. 
아래식은 무명 메서드를 쉽게 란다 식으로 변경한 간단한 예이다.
this.button1.Click += (sender, e) => ((Button)sender).BackColor = Color.Red;
 
람다식 은 .NET 여러 곳에서 사용되지만 특히 LINQ ( Language Intergrated Query) 에서 많이 사용된다.
LINQ 는 별도의 주제이지만 아래는 람다식의 LINQ의 where 쿼리에서 사용되는 간단한 예이다
var proj = db.Projects.Where(p => p.Name == strName);

'C#' 카테고리의 다른 글

[C#] Nullable<T>  (0) 2023.07.18
[C#] Interface로 구현한 폼 간 값전달  (0) 2023.07.18
[c# 키워드] delegate  (0) 2023.07.18
[c# 키워드] yield  (0) 2023.07.18
[C#] 마우스 후킹하기  (0) 2023.07.18

관련글 더보기