Expression<TDelegate> Sınıf

Tanım

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 Expression<TDelegate> temsilcinin türü.

Devralma
Expression<TDelegate>

Örnekler

Aşağıdaki kod örneği, lambda ifadesinin hem bir temsilci biçiminde yürütülebilir kod olarak hem de bir ifade ağacı biçimindeki veriler olarak nasıl temsil yapılacağını gösterir. Ayrıca yöntemini kullanarak ifade ağacının yürütülebilir koda nasıl geri döndürülmesi de gösterilmektedir Compile .


// 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ü Expression<TDelegate>olan bir değişkene, alana veya parametreye bir lambda ifadesi atandığında, derleyici bir ifade ağacı oluşturma yönergelerini yayar.

Not

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ümlemesine 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 tanımlanan birçok standart sorgu işlecinin Queryable türünde Expression<TDelegate>bir veya daha fazla parametresi vardır.

bir NodeTypeExpression<TDelegate> öğesinin adıdır Lambda.

Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) Nesne Expression<TDelegate> oluşturmak için veya Lambda<TDelegate>(Expression, ParameterExpression[]) yöntemini kullanın.

Özellikler

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 derlenmediğini gösteren değeri alır.

(Devralındığı yer: LambdaExpression)
Type

Bunun Expression temsil ettiği ifadenin statik türünü alır.

(Devralındığı yer: LambdaExpression)

Yöntemler

Accept(ExpressionVisitor)

Bu düğüm türü için belirli bir ziyaret yöntemine gönderilir. Örneğin, MethodCallExpression öğesini çağırır VisitMethodCall(MethodCallExpression).

(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ş kod olarak derler ve lambda ifadesini temsil eden bir temsilci oluşturur.

Compile(Boolean)

Lambda ifadesini temsil eden yorumlanmış veya derlenmiş bir temsilci oluşturur.

(Devralındığı yer: LambdaExpression)
Compile(DebugInfoGenerator)

Lambda ifadesini temsil eden bir temsilci oluşturur.

Compile(DebugInfoGenerator)

Lambda ifadesini temsil eden bir temsilci oluşturur.

(Devralındığı yer: LambdaExpression)
CompileToMethod(MethodBuilder)

Lambdayı bir yöntem tanımına derler.

(Devralındığı yer: LambdaExpression)
CompileToMethod(MethodBuilder, DebugInfoGenerator)

Lambda'yi bir yöntem tanımına ve özel hata ayıklama bilgilerine 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()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ 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) azaltır veya zaten bilinen bir türse yalnızca ifadeyi döndürür.

(Devralındığı yer: Expression)
ToString()

öğesinin metinsel bir gösterimini Expressiondö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 ifade döndürülecektir.

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)

Şunlara uygulanır

Ayrıca bkz.