2015. 1. 10. 12:39ㆍIT Books/시작하세요 C# 프로그래밍
- 람다 식 자체가 데이터가 되어 구문 분석의 대상이 됨. 이 람다 식은 별도로 컴파일이 가능하며 메서드로도 호출 가능
위쪽 thread의 delegate를 아래쪽 람다 식에서는 생략했고
인자의 타입도 표기하지 않았다.
이런 람다 식이 사용된 코드는 컴파일러에서는 익명 메서드와 완전히 동일하게 확장해서 컴파일한다.
좀더 약식으로는 return문도 생략가능하다.
위 코드의 Action, Func는 인자의 개수가 정해져 있지만 MS에서 최대 16개까지 미리 타입을 지정해 놨으니
지정된 것을 사용하면 된다.
------------------------------------------------------------------------
Collection and Lambda Expression
컬렉션의 모든 요소를 열람하면서 수행할 작업이 있을 때 for, foreach를 사용했다.
Array. List<T> 컬렉션에 있는 ForEach 메서드를 써보자.
일일이 루프를 돌리지 않고 위와 같이 람다 식을 인자로 받아 결과를 반환하는 특수한 메서드들도 있다.
람다 식을 이용한 지연 평가
Enumerable 타입에는 Where 확장메서드가 정의되어 있다.
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
FindAll 처럼 Where도 같은 동작을 수행한다.
다만 Where는 IEnumerable<T>로 열거형을 반환한다.
단순 형변환 뿐만 아니라
객체 반환
익명 타입까지도 구성하여 반환이 가능하다.
데이터로서의 람다 식
람다 식을 코드가 아닌, 그 자체의 '식을 표현한 데이터'로 사용가능하다.
이를 식 트리 (Expression Tree)라고 한다.
식 트리로 담긴 람다 식은 익명 메서드가 아니기 때문에 System.Linq.Expressions.Expression 타입의 인스턴스가 된다.
- http://ko.wikipedia.org/wiki/%EB%9E%8C%EB%8B%A4_%EB%8C%80%EC%88%98 [본문으로]
'IT Books > 시작하세요 C# 프로그래밍' 카테고리의 다른 글
9장 - C# 4.0 (0) | 2015.01.16 |
---|---|
8장 - C# 3.0 - 3 (0) | 2015.01.12 |
8장 - C# 3.0 - 1 (0) | 2015.01.06 |
7장 - c#2.0 - 그외 (0) | 2014.12.28 |
7장 - c#2.0 - 제네릭 (0) | 2014.12.25 |