-
람다식(Lambda Expression)C# 예제 공부일기 2020. 7. 22. 20:10
람다식은 익명 메소드를 간단하게 표현할 수 있는 방법이다. 람다식은 개체로 처리되는 코드 블록(식 또는 문 블록)이며 메소드와 같이 매개변수와 리턴 값을 갖는다. 람다식은 인수를 메소드에 전달할 수 있으며 값을 반환할 수 있다.
람다식은 델리게이트로 표현될 수 있는 코드이다.
람다식의 델리게이트형은 리턴 값이나 매개변수 개수에 따라 정해진다.
리턴 값이 없는 람다식은 Action 델리게이트에 해당하고 리턴 값이 있는 람다식은 Func델리게이트에 해당한다.
두개의 파라미터를 갖고 리턴 값이 없는 람다식 Action<T1,T2> 델리게이트
한개의 파라미터를 갖고 리턴 값이 하나인 람다식 Func<T, TResult> 델리게이트
람다식은 연산자 " => "로 표현된다.
매개변수 => 식, 또는 문장 (리턴 값)
예시)
x => x * x : 매개변수 x에 대해 x제곱을 리턴하는 람다식.
익명 메소드는 delegate로 만들고 메소드 이름이 없이 사용된다. C#3.0 부터는 람다식이 도입되면서 익명 메소드를 쓸일이 없어졌다. 람다식이 훨씬 간단하기 때문이다.
int n = Count(arr, delegate (int x) {return x % 2==0; });
람다식으로 표현하면
int n = COunt(arr, x => x%2==0 );
class Program { //delegate bool MemberTest(int a); 요거 없어도 된다. Func쓸거니까 static void Main(string[] args) { int[] arr = new int[] { 3, 5, 4, 2, 6, 4, 6, 8, 54, 23, 4, 6, 4 }; Console.WriteLine("짝수의 개수 : " + Count(arr, x => x % 2 == 0)); //람다식으로 바로 정의 Console.WriteLine("홀수의 개수 : " + Count(arr, x => x % 2 ==1)); } static int Count(int[] a, Func<int,bool> testMethod) { //리턴 값이 있으니 Func 리턴이 없을 경우엔 Action int cnt = 0; foreach (var n in a) { if (testMethod(n)) //밑의 Is메소드에서는 반환이 bool이다. cnt++; } return cnt; } }
편리하긴 편리한데 아직 Sort 메소드에서 IComparer 인터페이스를 재정의 할때 빼곤 사용해본 적이 없다.
'C# 예제 공부일기' 카테고리의 다른 글
List<T> 에서 Predicate<T> 델리게이트 활용 (0) 2020.07.28 Predicate<T> 델리게이트 (0) 2020.07.28 Func와 Action으로 델리게이트를 더 간단히 만들기 (0) 2020.07.22 이름 없는 델리게이트(Anonymous Delegate) (0) 2020.07.22 Delegate의 기본, 배열에서 홀수와 짝수 찾기 + Delegate 예제 (0) 2020.07.22