다음을 통해 공유


방법: 식 트리 실행(C# 및 Visual Basic)

이 항목에서는 식 트리를 실행하는 방법을 보여 줍니다.식 트리를 실행하면 값이 반환되거나 단순히 메서드 호출과 같은 작업이 수행될 수 있습니다.

람다 식을 나타내는 식 트리만 실행할 수 있습니다.람다 식을 나타내는 식 트리는 LambdaExpression 또는 Expression<TDelegate> 형식입니다.이러한 식 트리를 실행하려면 Compile 메서드를 호출하여 실행 가능한 대리자를 만든 다음 대리자를 호출합니다.

[!참고]

대리자의 형식을 알 수 없는 경우, 즉 람다 식이 LambdaExpression 형식이고 Expression<TDelegate> 형식이 아닌 경우 DynamicInvoke 메서드를 직접 호출하는 대신에 대리자에서 호출해야 합니다.

식 트리가 람다 식을 나타내지 않을 경우 Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) 메서드를 호출하여 원래 식 트리를 본문으로 가지는 새 람다 식을 만들 수 있습니다.그런 다음 이 단원의 앞에 설명된 대로 람다 식을 실행할 수 있습니다.

예제

다음 코드 예제에서는 람다 식을 만들고 실행하여 숫자의 거듭제곱을 나타내는 식 트리를 실행하는 방법을 보여 줍니다.거듭제곱한 숫자를 나타내는 결과가 표시됩니다.

        ' The expression tree to execute.
        Dim be As BinaryExpression = Expression.Power(Expression.Constant(2.0R), Expression.Constant(3.0R))

        ' Create a lambda expression.
        Dim le As Expression(Of Func(Of Double)) = Expression.Lambda(Of Func(Of Double))(be)

        ' Compile the lambda expression.
        Dim compiledExpression As Func(Of Double) = le.Compile()

        ' Execute the lambda expression.
        Dim result As Double = compiledExpression()

        ' Display the result.
        MsgBox(result)

        ' This code produces the following output:
        ' 8

            // The expression tree to execute.
            BinaryExpression be = Expression.Power(Expression.Constant(2D), Expression.Constant(3D));

            // Create a lambda expression.
            Expression<Func<double>> le = Expression.Lambda<Func<double>>(be);

            // Compile the lambda expression.
            Func<double> compiledExpression = le.Compile();

            // Execute the lambda expression.
            double result = compiledExpression();

            // Display the result.
            Console.WriteLine(result);

            // This code produces the following output:
            // 8

코드 컴파일

  • 이미 참조되지 않았다면 System.Core.dll에 대한 프로젝트 참조를 추가합니다.

  • System.Linq.Expressions 네임스페이스를 포함합니다.

참고 항목

작업

방법: 식 트리 수정(C# 및 Visual Basic)

개념

식 트리(C# 및 Visual Basic)