Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu, bir ifade ağacının nasıl yürütüleceğini gösterir. İfade ağacının yürütülmesi bir değer döndürebilir veya yalnızca yöntem çağırma gibi bir eylem gerçekleştirebilir.
Yalnızca lambda ifadelerini temsil eden ifade ağaçları yürütülebilir. Lambda ifadelerini temsil eden ifade ağaçları, LambdaExpression veya Expression<TDelegate> türündedir. Bu ifade ağaçlarını yürütmek için önce Compile metodunu çağırarak yürütülebilir bir temsilci oluşturun ve ardından bu temsilciyi çağırın.
Uyarı
Temsilcinin türü bilinmiyorsa, yani lambda ifadesi LambdaExpression türünde ve Expression<TDelegate> değilse, doğrudan çağırmak yerine temsilcinin DynamicInvoke yöntemini çağırmanız gerekir.
İfade ağacı bir lambda ifadesini temsil etmiyorsa, yöntemini çağırarak Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) özgün ifade ağacını gövdesi olarak içeren yeni bir lambda ifadesi oluşturabilirsiniz. Ardından, bu bölümün önceki bölümlerinde açıklandığı gibi lambda ifadesini yürütebilirsiniz.
Örnek
Aşağıdaki kod örneğinde, lambda ifadesi oluşturup çalıştırarak bir sayıyı bir güce yükseltmeyi temsil eden bir ifade ağacının nasıl yürütüldiği gösterilmektedir. Güce yükseltilen sayıyı temsil eden sonuç görüntülenir.
' 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
Kodu derleme
- System.Linq.Expressions ad alanını ekleyin.