1. 람다식의 의미
람다(Lambda)라는 용어와 C#에서 제공하는 람다식과는 어떤 연관관계가 있는 것일까요? 람다라는 단어가 생소하니 람다식이라고 하면 언뜻 그 의미가 잘 떠오르질 않습니다. (개념이 궁금하신 분은 나무위키를 참고하시기 바랍니다)
이 글에서는 LINQ에서 람다식의 활용에 한정해서 설명하도록 하겠습니다. 일단 다른건 다 잊으시고 람다식 = 익명함수를 의미한다 라고 이해하시기 바랍니다. 결론부터 얘기하자면 람다식은 다음과 같은 코드를 의미합니다.
x => x*10
위의 코드 한 줄이 우리가 알아야 하는 람다식의 전부입니다. =>연산자 때문에 괜히 어렵게 느껴지는 위의 식은 x를 파라미터로 받아 x*10한 결과를 리턴하는 함수를 의미합니다. 익명(무명) 메소드와 비슷하죠.
2. 람다식의 형식
람다식(Lambda expressions)은 익명메소드의 확장된 형태입니다. 프로그래밍을 하다보면 어떤 기술이나 문법에 대해 장황하게 늘어놓은 설명을 보면 더욱 알 수 없게 되는 경우가 많은데요, 그러다 보니 백번 듣는 것 보다 한 줄 코딩이 낫다는 말도 하곤 하죠. 람다식이 딱 그렇습니다. "람다식은 개체로 처리되는 코드 블록(식 또는 문 블록)입니다. 이 식은 인수로 메서드에 전달할 수 있으며 메서드 호출에서 반환될 수도 있습니다"란 설명을 보고 그 의미가 명확히 이해되는 사람이 얼마나 있을까요? 제 생각엔 람다식의 최대 장점은 인라인 함수로 사용할 수 있다. 즉, 코드가 간결해 진다는 점입니다.
위의 식은 다음과 같이 사용할 수도 있습니다. 즉, 모두 같은 의미입니다.
x => x*10 (int x) => x*10 (int x) => (x*10) x => {return x*10;} (int x) => {return x*10;}
즉 파라미터의 타입을 선언해도 되고 생략해도 되고, 타입선언을 하면 괄호를 쳐야하고, return를 써도되고 안써도되는데 쓰려면 {}로 감싸줘야 한다. 뭐 이런겁니다.
파라미터가 두 개 이상일때도 크게 다르지 않습니다.
(x, y) => x*y (int x) => x*10 (int x, int y) => x*y
파라미터 => 표현식 이라 얘기할 수 있는데, 아래와 같이 파라미터 => 처리구문 으로도 표현할 수 있습니다.
x => {return x*10}
x => x*10와 (int x) => x*10 와 는 모두 결과가 동일합니다. 그럼 여러분은 어떻게 사용하시겠습니까? 당연히 x => x*10 겠죠? 가장 간단한 이 표현식 외에 다른 표현은 머릿속에서 지워버리시기 바랍니다. 람다식은 LINQ에서 사용하기 위한 용도로 생각해 주세요.
프로젝트의 성공을 기원합니다.
'ASP.net with C# (웹폼)' 카테고리의 다른 글
C# 삼항연산자(Ternary Operator)로 간결한 코딩을! (0) | 2019.05.14 |
---|---|
C# 반올림, 올림, 버림 - 0.5는 왜 1이 안되는가? (0) | 2019.05.09 |
C# using과 try catch finally의 차이점 (0) | 2019.04.20 |
C# 엑셀 셀 형식표(mso-number-format) (0) | 2019.04.07 |
System.ArgumentNullException: '값은 null일 수 없습니다. 문제 해결 (0) | 2019.04.06 |