[c#] 람다식을 사용하여 어떻게 람다 식 트리를 만들어 사용할 수 있나요?
람다식 트리는 람다식을 사용하여 동적으로 식 트리를 만들고 실행할 수 있는 기능입니다. 람다식 트리는 일반적으로 LINQ 쿼리나 다른 동적 코드 생성 시나리오에서 사용됩니다.
람다식 트리 만들기
람다식 트리를 만들기 위해서는 Expression
클래스의 메서드를 사용합니다.
예를 들어, x => x * x
와 같은 람다식을 사용하여 Expression<Func<int, int>>
형식의 람다식 트리를 만들고 싶다면, 다음과 같이 작성할 수 있습니다.
using System;
using System.Linq.Expressions;
class Program
{
static void Main()
{
// 입력 파라미터
ParameterExpression x = Expression.Parameter(typeof(int), "x");
// 람다 식: x => x * x
Expression<Func<int, int>> lambda = Expression.Lambda<Func<int, int>>(
Expression.Multiply(x, x), x);
// 람다식 트리를 컴파일하여 실행
Func<int, int> square = lambda.Compile();
Console.WriteLine(square(5)); // 출력: 25
}
}
위 예제에서, Expression.Lambda
메서드를 사용하여 람다식 트리를 만들고, Compile
메서드를 사용하여 실행 가능한 람다 식을 생성합니다.
람다식 트리 사용하기
람다식 트리를 사용하면 코드를 동적으로 생성하고 실행할 수 있습니다. 예를 들어, LINQ 쿼리나 동적으로 생성된 식을 사용하여 데이터베이스 쿼리를 작성할 때 유용하게 사용될 수 있습니다.
using System;
using System.Linq.Expressions;
class Program
{
static void Main()
{
// 입력 파라미터
ParameterExpression x = Expression.Parameter(typeof(int), "x");
// 람다 식: x => x * x
Expression<Func<int, int>> lambda = Expression.Lambda<Func<int, int>>(
Expression.Multiply(x, x), x);
// 람다식 트리를 컴파일하여 실행
Func<int, int> square = lambda.Compile();
Console.WriteLine(square(5)); // 출력: 25
}
}
람다식 트리를 사용하면 동적으로 생성된 코드를 빌드하거나 실행할 수 있어 매우 유연하게 코드를 작성할 수 있습니다.
이렇게 람다식 트리를 사용하면 C#에서 동적으로 코드를 생성하고 실행할 수 있습니다. 사용 방법을 익히면 LINQ나 기타 동적 코드 생성 시나리오에서 유용하게 활용할 수 있습니다.
더 많은 정보는 Microsoft 공식 문서를 참고하시기 바랍니다.