- 공유 링크 만들기
- X
- 이메일
- 기타 앱
안녕하세요 메르세데스입니다. 지겨운 델리게이트에서 벗어났습니다 이번에 알아볼 것은 람다식 입니다. 저에겐 처음 들어보는 단어인데요.. 기원은 수학식에서.. 나온 말이네요.. 분명하고 간결한 방법으로 함수를 표현하고 싶은 것에서 기원이 되었다고 합니다.
좀 더.. 인간 언어에 가까운 프로그래밍표현이라고 해야겠네요..
이것은 익명메소드를 대체하기 위해서 만들어진 또 다른 기능입니다. delegate에서도 이런 이름 없는 method를 처리하는 방법이 있었는데요 이것을 좀 더 간결하게 표현할 수 있는 방법을 제공합니다.
이것에 익숙해지면 기존의 방법을 안 쓰고 람다식으로 모두 표현할 수 있다고 합니다... 그렇다면 왜 지겹고 힘들게 델리게이트를 배웠던 것일까요? ㅜㅠ
이유가 있었네요..Lambda식의 경우 C#의 3.0부터 도입이 되었는데요 그 이전에 만들어진 것과 호환이 안되면 안되니.. 있는 거라고 합니다. 헐!
그쵸.. 개발툴 버전이 올라가면.. 이전 소스에서 컨버전 안되는 것이 많이 발생한다면 정말 큰 문제가 되거든요.. 이런 문제는 비단 C#만의 문제는 아닐 것 입니다.
그렇다면 델리게이트의 익명메소드를 전부다 해결할 수 있다는 람다식의 표현 방법이 대체 어떤 것인지 알아보도록 하겠습니다.
이러한.. 구문이 있다고 하죠.. 제 나름대로.. 이것도 정말 간결한 방법이라고 생각하는데요.. 익명 메소드를 선언 한거죠?
이걸 람다식 표현으로 나타낸다면 이렇게 됩니다!
Calc cl = (a, b) => a + b;
또한 if , else if 등의 조건식도 표현이 가능합니다.
(매개변수) => { 문장1;
문장2;
... };
문장2;
... };
저는 C#을 줄곧 사용해본 적이 없기 때문에 정확히는 잘 모르겠지만.. 소스가 간결해져서 보기 좋습니다.
=> 이런 연산자가 중간에 있어 이상하긴 하지만.. 나름대로 괜찮아 보입니다. 이것 역시 마찬가지로.. 사용하기 위해서는
delegate를 선언해 줘야 하긴 합니다 만.. 정말 간결 그 자체네요..
한발 더 나가서.. 선언해주는 람다식을 이용하기 위해서 선언한 델리게이트 조차도 생략할 수 있습니다. 일반화를 이용해서 프레임워크 단에서... 이런 귀찮음을 해결해줬네요..
예제를 볼까요??
위의 예제를 보면.. 특별히 delegate를 선언하지 않았지만.. Func<int> ... 이런 식으로 사용할 수 있습니다. 미리 만들어 놨다는 거죠.. 익명이기 때문에.. 그냥 형식만 갖춰서 사용하면 된다 이겁니다. 정말 간편하겠네요..
매개변수가 없는 것부터.. 16개까지 있는 것을 사용할 수 있습니다.
또한.. Func, Action (delegate) 두 가지 종류가 있는데요.. 차례대로.. 결과를 반환하는 것과 반환하지 않는 것! 으로 분류됩니다.
정말 필요한 것을 편하게.. 그리고 귀찮음을 덜하게.. 머리를 잘 썼네요 칭찬하고 싶습니다 진심으로요..! 일반화하여서 사용하면 형 식에 얽메이지 않고 사용이 가능하겠습니다. 맞춰주기만 하면 됩니다. 기존에 배웠던 것을 잊어도 되겠네요 ..
이상으로 C#의 람다식에 대해 알아봤습니다. 감사합니다.
댓글
댓글 쓰기