[C#] 식 트리 (ExpressionTrees)

빵욱·2024년 1월 26일

C#_Event

목록 보기
4/7

식 트리

이벤트를 공부하기 위해 대리자부터 학습을 하고 있는데 식 트리라는 개념이 있어서 정리.

식 트리란?
C#에서 람다 표현식(식 람다만)의 구조와 실행 로직을 데이터 구조로 표현한 것이다.
식트리를 사용하면 람다 표현식의 구성 요소인 연산자, 변수, 상수를 노드로 가지는 트리 구조로
람다 표현식을 나타낼 수 있다.
이를 통해 표현식을 분석, 수정하고 다른 질의 언어처럼 사용할 수 있다.

Example

// 식트리 생성.
//  (a, b) => a + b;는 람다식
Expression<Func<int, int, int>> addExpression = (a, b) => a + b;

// 식 트리의 본체를 조사
BinaryExpression body = (BinaryExpression)addExpression.Body;

// 식 트리의 연산자와 매개변수 정보 출력
Console.WriteLine($"Operation: {body.NodeType}, Left: {body.Left}, Right: {body.Right}");


// 식 트리 컴파일
// 식 트리를 컴파일하여 실행 가능한 델리게이트로 변환하고, 이를 사용하여 실제 연산을 수행
Func<int, int, int> addFunc = addExpression.Compile();

// 컴파일된 함수 실행
int result = addFunc(10, 20);
Console.WriteLine($"Result: {result}"); // 출력: Result: 30

추후에 더 자세하게 정리하는 걸로..

profile
rove drink eat

0개의 댓글