웹 개발 메모장

[C#] 람다 식 이란? 본문

옛날../C#

[C#] 람다 식 이란?

도로롱주 2017. 10. 13. 11:30



익명 메서드 (anonymous method)


일반 메서드와 유사하지만 메서드의 이름을 명시하지 않고, 대신 그 자리에 delegate 키워드를 명시합니다.



다음과 같이 메서드가 정의 되어있을 때

1
2
3
4
5
6
7
8
9
10
11
delegate int Calc(int x, int y);
        
int myCalc(int x, int y, Calc calc)
{
    return calc(x, y);
}
 
int plus(int x, int y)
{
    return x + y;
}
cs


이렇게 myCalc를 호출할 수 도 있지만

1
int result = myCalc(1020, plus);
cs


이렇게 미리 메서드를 정의하지 않고 익명 메서드를 이용할 수 있습니다.

1
int result = myCalc(1020delegate(int x, int y) { return x * y; });
cs




람다식


람다식이란 delegate 또는 식 트리 형식을 만드는 데 사용할 수 있는 익명 함수로 익명 메소드와 같은 역할을 합니다.


 (매개변수1, 매개변수2, ...) => {...함수 내용...} 


이렇게 사용합니다.


위의 코드를 람다식으로 바꿔보겠습니다. 1,2,3행 모두 같은 동작을 합니다.

1
2
3
int result = myCalc(1020delegate(int x, int y) { return x * y; });
int result = myCalc(1020, (int x, int y) => { return x * y; });
int result = myCalc(1020, (x, y) => x * y);
cs


2 행에서 매개변수의 자료형은 굳이 명시하지 않아도

1
delegate int Calc(int x, int y);
cs

Calc 대리자(delegate)와 같은 형태의 매개변수 밑 반환값을 가져야 하기 때문에 생략 가능합니다.

또한 함수 내용 부분이 위처럼 return 만 있다면 중괄호( { ,  } )도 생략 가능합니다.

따라서 3행 처럼 사용하시면 되겠습니다.



'옛날.. > C#' 카테고리의 다른 글

[C#] C# 코드에서 @ 골뱅이 란?  (0) 2017.10.20
[C#] 예외처리 란?  (0) 2017.10.20
[C#] 이니셜라이저 란?  (0) 2017.10.13
[C#] Func 와 Action 대리자(delegate) 란?  (0) 2017.10.13
[C#] delegate 대리자 란?  (0) 2017.10.12
Comments