웹 개발 메모장
[C#] 람다 식 이란? 본문
익명 메서드 (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(10, 20, plus); | cs |
이렇게 미리 메서드를 정의하지 않고 익명 메서드를 이용할 수 있습니다.
1 | int result = myCalc(10, 20, delegate(int x, int y) { return x * y; }); | cs |
람다식
람다식이란 delegate 또는 식 트리 형식을 만드는 데 사용할 수 있는 익명 함수로 익명 메소드와 같은 역할을 합니다.
(매개변수1, 매개변수2, ...) => {...함수 내용...}
이렇게 사용합니다.
위의 코드를 람다식으로 바꿔보겠습니다. 1,2,3행 모두 같은 동작을 합니다.
1 2 3 | int result = myCalc(10, 20, delegate(int x, int y) { return x * y; }); int result = myCalc(10, 20, (int x, int y) => { return x * y; }); int result = myCalc(10, 20, (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