ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# 람다식 - 표현식 트리
    C# 2022. 2. 22. 21:23
    728x90

    해당 문서는 길벗 출판사의 '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
    반응형

    댓글

Designed by Tistory.