Expression<TDelegate> Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Kesin olarak yazılan lambda ifadesini, ifade ağacı biçiminde bir veri yapısı olarak temsil eder. Bu sınıf devralınamaz.
generic <typename TDelegate>
public ref class Expression sealed : System::Linq::Expressions::LambdaExpression
public sealed class Expression<TDelegate> : System.Linq.Expressions.LambdaExpression
type Expression<'Delegate> = class
inherit LambdaExpression
Public NotInheritable Class Expression(Of TDelegate)
Inherits LambdaExpression
Tür Parametreleri
- TDelegate
temsil ettiği temsilcinin Expression<TDelegate> türü.
- Devralma
Örnekler
Aşağıdaki kod örneğinde, lambda ifadesinin hem temsilci biçiminde yürütülebilir kod olarak hem de bir ifade ağacı biçiminde veri olarak nasıl temsil edilir gösterilmektedir. Ayrıca yöntemini kullanarak ifade ağacının yürütülebilir koda nasıl geri döndürülmesi de Compile gösterilir.
// Lambda expression as executable code.
Func<int, bool> deleg = i => i < 5;
// Invoke the delegate and display the output.
Console.WriteLine("deleg(4) = {0}", deleg(4));
// Lambda expression as data in the form of an expression tree.
System.Linq.Expressions.Expression<Func<int, bool>> expr = i => i < 5;
// Compile the expression tree into executable code.
Func<int, bool> deleg2 = expr.Compile();
// Invoke the method and print the output.
Console.WriteLine("deleg2(4) = {0}", deleg2(4));
/* This code produces the following output:
deleg(4) = True
deleg2(4) = True
*/
' Lambda expression as executable code.
Dim deleg As Func(Of Integer, Boolean) = Function(ByVal i) i < 5
' Invoke the delegate and display the output.
MsgBox(String.Format("deleg(4) = {0}", deleg(4)))
' Lambda expression as data in the form of an expression tree.
Dim expr As System.Linq.Expressions.Expression(Of Func(Of Integer, Boolean)) = Function(ByVal i) i < 5
' Compile the expression tree into executable code.
Dim deleg2 As Func(Of Integer, Boolean) = expr.Compile()
' Invoke the method and print the output.
MsgBox(String.Format("deleg2(4) = {0}", deleg2(4)))
' This code produces the following output:
'
' deleg(4) = True
' deleg2(4) = True
Açıklamalar
Türü olan bir değişkene, alana veya parametreye Expression<TDelegate>lambda ifadesi atandığında, derleyici bir ifade ağacı oluşturma yönergelerini gösterir.
Note
Lambda ifadesinden tür temsilcisine dönüştürme varsa, lambda ifadesinden türe Expression<D>D dönüştürme (Expression(Of D)Visual Basic'te) vardır. Ancak, örneğin lambda ifadesinin gövdesi bir blok ise dönüştürme başarısız olabilir. Bu, temsilcilerin ve ifade ağaçlarının aşırı yükleme çözümlemesiyle benzer şekilde davranacağı anlamına gelir.
İfade ağacı, lambda ifadesinin bellek içi veri gösterimidir. İfade ağacı lambda ifadesinin yapısını saydam ve açık hale getirir. İfade ağacındaki verilerle, diğer veri yapılarında olduğu gibi etkileşim kurabilirsiniz.
İfadeleri veri yapıları olarak ele alma özelliği, API'lerin kullanıcı kodunu incelenebilir, dönüştürülebilir ve özel bir şekilde işlenebilen bir biçimde almasını sağlar. Örneğin LINQ to SQL veri erişimi uygulaması, ifade ağaçlarını veritabanı tarafından değerlendirilebilecek Transact-SQL deyimlerine çevirmek için bu özelliği kullanır.
sınıfında Queryable tanımlanan birçok standart sorgu işlecinin türünde Expression<TDelegate>bir veya daha fazla parametresi vardır.
bir'in NodeTypeExpression<TDelegate> adıdır Lambda.
Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) Nesne oluşturmak Expression<TDelegate> için veya Lambda<TDelegate>(Expression, ParameterExpression[]) yöntemini kullanın.
Özellikler
| Name | Description |
|---|---|
| Body |
Lambda ifadesinin gövdesini alır. (Devralındığı yer: LambdaExpression) |
| CanReduce |
Düğümün daha basit bir düğüme indirgenebileceğini gösterir. Bu true döndürürse, azaltılmış formu oluşturmak için Reduce() çağrılabilir. (Devralındığı yer: Expression) |
| Name |
Lambda ifadesinin adını alır. (Devralındığı yer: LambdaExpression) |
| NodeType |
Bu Expressiondüğüm türünü döndürür. (Devralındığı yer: LambdaExpression) |
| Parameters |
Lambda ifadesinin parametrelerini alır. (Devralındığı yer: LambdaExpression) |
| ReturnType |
Lambda ifadesinin dönüş türünü alır. (Devralındığı yer: LambdaExpression) |
| TailCall |
Lambda ifadesinin kuyruk çağrısı iyileştirmesi ile derlenip derleneceğini belirten değeri alır. (Devralındığı yer: LambdaExpression) |
| Type |
Bu Expression temsil ettiği ifadenin statik türünü alır. (Devralındığı yer: LambdaExpression) |
Yöntemler
| Name | Description |
|---|---|
| Accept(ExpressionVisitor) |
Bu düğüm türü için belirli bir ziyaret yöntemine gönderilir. Örneğin, MethodCallExpressionVisitMethodCall(MethodCallExpression)çağırır. (Devralındığı yer: Expression) |
| Compile() |
İfade ağacı tarafından açıklanan lambda ifadesini yürütülebilir kod olarak derler ve lambda ifadesini temsil eden bir temsilci oluşturur. |
| Compile(Boolean) |
İfade ağacı tarafından açıklanan lambda ifadesini yorumlanmış veya derlenmiş koda derler ve lambda ifadesini temsil eden bir temsilci oluşturur. |
| Compile(DebugInfoGenerator) |
Lambda ifadesini temsil eden bir temsilci oluşturur. |
| CompileToMethod(MethodBuilder, DebugInfoGenerator) |
Lambda'yi bir yöntem tanımı ve özel hata ayıklama bilgileri halinde derler. (Devralındığı yer: LambdaExpression) |
| CompileToMethod(MethodBuilder) |
Lambda'yi bir yöntem tanımında derler. (Devralındığı yer: LambdaExpression) |
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| Reduce() |
Bu düğümü daha basit bir ifadeye küçültür. CanReduce true döndürürse, bu geçerli bir ifade döndürmelidir. Bu yöntem, azaltması gereken başka bir düğüm döndürebilir. (Devralındığı yer: Expression) |
| ReduceAndCheck() |
Bu düğümü daha basit bir ifadeye küçültür. CanReduce true döndürürse, bu geçerli bir ifade döndürmelidir. Bu yöntem, azaltması gereken başka bir düğüm döndürebilir. (Devralındığı yer: Expression) |
| ReduceExtensions() |
İfadeyi bilinen bir düğüm türüne (Uzantı düğümü değildir) küçültür veya zaten bilinen bir türse yalnızca ifadeyi döndürür. (Devralındığı yer: Expression) |
| ToString() |
Expressionmetinsel gösterimini döndürür. (Devralındığı yer: Expression) |
| Update(Expression, IEnumerable<ParameterExpression>) |
Bunun gibi, ancak sağlanan alt öğeleri kullanarak yeni bir ifade oluşturur. Tüm alt öğeler aynıysa, bu ifadeyi döndürür. |
| VisitChildren(ExpressionVisitor) |
Düğümü azaltır ve ardından azaltılmış ifadede ziyaretçi temsilcisini çağırır. Yöntem, düğüm azaltılabilir değilse bir özel durum oluşturur. (Devralındığı yer: Expression) |