이 주제에서는 표현식 트리를 실행하는 방법을 설명합니다. 식 트리를 실행하면 값이 반환되거나 메서드 호출과 같은 작업만 수행할 수 있습니다.
람다 식을 나타내는 식 트리만 실행할 수 있습니다. 람다 식을 나타내는 식 트리는 형식 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
코드 컴파일
- System.Linq.Expressions 네임스페이스를 포함합니다.
참고하십시오
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET