-
C# 람다식 - 표현식 트리C# 2022. 2. 22. 21:23728x90
해당 문서는 길벗 출판사의 'C#을 다루는 기술'에 나온 소스를 정리하기 위해 만들었다.
표현식 트리
코드를 마치 데이터처럼 표현한 것
예제
Expression<Func<int, int, int>> adder = (x, y) => x + y; Console.WriteLine(adder); // 출력결과 : (x, y) => x + y
출력결과가 (x, y) => x + y 다 람다식 표현식 트리의 정보를 이용하여 문자열로 가공한 결과를 출력했다.
참고로 중괄호로 둘러싸인 본문은 사용할 수 없다. 뒤쪽이 (x, y) => {return x + y; }; 일때 사용이 불가능하다
델리게이트로 컴파일
Expression<Func<int, int, int>> adder = (x, y) => x + y; Func<int, int, int> executableAdder = adder.Compile(); Console.WriteLine(executableAdder(2, 3)); // 델리게이트를 일반적인 방법으로 호출
Expression는 Compile()이라는 메서드를 가지고 있어서 그 결과로 델리게이트 타입을 반환해 준다.
리플렉션을 이용하여 속성값에 접근하거나 메서드를 호출해야 할 때 이와 같은 방식을 활용하여 델리게이트로 컴파일한 후 캐싱하면 성능에 큰 도움이 된다. 컴파일 결과로 생성되는 델리게이트는 개발자가 직접 작성한 코드만큼이나 빠르게 수행될 것이다.
728x90반응형'C#' 카테고리의 다른 글
PowerApps-Samples DataverseSDK 예제설명 1 - WhoAmI (0) 2022.06.23 Dataverse SDK 1.0 런칭 (0) 2022.06.17 C# 단위테스트(UnitTest)2 - MSTest 설명 (0) 2022.02.24 C# 람다식 - 변수캡처 (0) 2022.02.20 C# 단위테스트(UnitTest) -1 VisualStudio 기본 단위테스트 툴 (0) 2022.02.20