Expression<TDelegate> Sınıf

Tanım

Bir ifade ağacı biçiminde bir veri yapısı olarak türü kesin belirlenmiş bir lambda ifadesini temsil eder.Represents a strongly typed lambda expression as a data structure in the form of an expression tree. Bu sınıf devralınamaz.This class cannot be inherited.

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

Expression<TDelegate>Temsil ettiği temsilcinin türü.The type of the delegate that the Expression<TDelegate> represents.

Devralma
Expression<TDelegate>

Örnekler

Aşağıdaki kod örneği, bir lambda ifadesinin hem bir temsilci biçiminde hem de bir ifade ağacı biçiminde veri olarak nasıl temsil edileceğini gösterir.The following code example demonstrates how to represent a lambda expression both as executable code in the form of a delegate and as data in the form of an expression tree. Ayrıca, yöntemi kullanılarak ifade ağacının yürütülebilir koda nasıl geri dönüştürüleceğini gösterir Compile .It also demonstrates how to turn the expression tree back into executable code by using the Compile method.


// 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

Bir lambda ifadesi, türü olan bir değişkene, alana veya parametreye atandığında Expression<TDelegate> , derleyici bir ifade ağacı oluşturmak için yönergeler yayar.When a lambda expression is assigned to a variable, field, or parameter whose type is Expression<TDelegate>, the compiler emits instructions to build an expression tree.

Not

Lambda ifadesinden tür temsilcisine bir dönüşüm varsa, lambda ifadesinden türüne dönüştürme Expression<D> ( Expression(Of D) Visual Basic) vardır D .A conversion from a lambda expression to type Expression<D> (Expression(Of D) in Visual Basic) exists if a conversion from the lambda expression to a delegate of type D exists. Ancak, örneğin lambda ifadesinin gövdesi bir blok ise dönüştürme başarısız olabilir.However, the conversion may fail, for example, if the body of the lambda expression is a block. Bu, temsilci ve ifade ağaçlarının aşırı yükleme çözümüyle ilgili benzer şekilde davranması anlamına gelir.This means that delegates and expression trees behave similarly with regard to overload resolution.

İfade ağacı, lambda ifadesinin bellek içi veri gösterimidir.The expression tree is an in-memory data representation of the lambda expression. İfade ağacı lambda ifadesinin yapısını saydam ve açık yapar.The expression tree makes the structure of the lambda expression transparent and explicit. Aynı diğer veri yapısıyla yaptığınız gibi, ifade ağacındaki verilerle etkileşime geçebilirsiniz.You can interact with the data in the expression tree just as you can with any other data structure.

İfadeleri veri yapıları olarak işleme özelliği, API 'Lerin Kullanıcı kodunu özel bir şekilde incelenebilir, dönüştürülebilme ve işlenebilecek bir biçimde almasına olanak tanır.The ability to treat expressions as data structures enables APIs to receive user code in a format that can be inspected, transformed, and processed in a custom manner. Örneğin, LINQ to SQL veri erişimi uygulamasının bu özelliği, veritabanı tarafından değerlendirilebilen Transact-SQL deyimlerine ifade ağaçları dönüştürmek için kullanır.For example, the LINQ to SQL data access implementation uses this facility to translate expression trees to Transact-SQL statements that can be evaluated by the database.

Sınıfta tanımlanan birçok standart sorgu işleci Queryable türünde bir veya daha fazla parametre vardır Expression<TDelegate> .Many standard query operators defined in the Queryable class have one or more parameters of type Expression<TDelegate>.

NodeTypeBir Expression<TDelegate> Lambda .The NodeType of an Expression<TDelegate> is Lambda.

Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) Lambda<TDelegate>(Expression, ParameterExpression[]) Bir nesne oluşturmak için veya yöntemini kullanın Expression<TDelegate> .Use the Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) or Lambda<TDelegate>(Expression, ParameterExpression[]) method to create an Expression<TDelegate> object.

Özellikler

Body

Lambda ifadesinin gövdesini alır.Gets the body of the lambda expression.

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

Düğümün daha basit bir düğüme indirgendiğini gösterir.Indicates that the node can be reduced to a simpler node. Bu true değerini döndürürse, azaltılmış formu oluşturmak için Küçült () çağrılabilir.If this returns true, Reduce() can be called to produce the reduced form.

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

Lambda ifadesinin adını alır.Gets the name of the lambda expression.

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

Bunun düğüm türünü döndürür Expression .Returns the node type of this Expression.

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

Lambda ifadesinin parametrelerini alır.Gets the parameters of the lambda expression.

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

Lambda ifadesinin dönüş türünü alır.Gets the return type of the lambda expression.

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

Lambda ifadesinin tail çağrısı iyileştirmesi ile derlenip derlenmeyeceğini gösteren değeri alır.Gets the value that indicates if the lambda expression will be compiled with the tail call optimization.

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

Bu temsil eden ifadenin statik türünü alır Expression .Gets the static type of the expression that this Expression represents.

(Devralındığı yer: LambdaExpression)

Yöntemler

Accept(ExpressionVisitor)

Bu düğüm türü için belirli bir ziyaret yöntemine dağıtır.Dispatches to the specific visit method for this node type. Örneğin, öğesini MethodCallExpression çağırır VisitMethodCall(MethodCallExpression) .For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression).

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

İfade ağacı tarafından açıklanan lambda ifadesini çalıştırılabilir koda derler ve lambda ifadesini temsil eden bir temsilci oluşturur.Compiles the lambda expression described by the expression tree into executable code and produces a delegate that represents the lambda expression.

Compile(Boolean)

İfade ağacı tarafından tanımlanan lambda ifadesini yorumlanan veya derlenen koda derler ve lambda ifadesini temsil eden bir temsilci oluşturur.Compiles the lambda expression described by the expression tree into interpreted or compiled code and produces a delegate that represents the lambda expression.

Compile(Boolean)

Lambda ifadesini temsil eden yorumlanan veya derlenen bir temsilci üretir.Produces an interpreted or compiled delegate that represents the lambda expression.

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

Lambda ifadesini temsil eden bir temsilci üretir.Produces a delegate that represents the lambda expression.

Compile(DebugInfoGenerator)

Lambda ifadesini temsil eden bir temsilci üretir.Produces a delegate that represents the lambda expression.

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

Lambda 'yi bir yöntem tanımına derler.Compiles the lambda into a method definition.

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

Lambda 'yi bir yöntem tanımı ve özel hata ayıklama bilgileri olarak derler.Compiles the lambda into a method definition and custom debug information.

(Devralındığı yer: LambdaExpression)
Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.Determines whether the specified object is equal to the current object.

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

Varsayılan karma işlevi olarak işlev görür.Serves as the default hash function.

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

TypeGeçerli örneği alır.Gets the Type of the current instance.

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

Geçerli bir basit kopyasını oluşturur Object .Creates a shallow copy of the current Object.

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

Bu düğümü daha basit bir ifadeye küçültür.Reduces this node to a simpler expression. Canazaltma doğru döndürürse, bu geçerli bir ifade döndürmelidir.If CanReduce returns true, this should return a valid expression. Bu yöntem, kendisinin düşürülmesi gereken başka bir düğüm döndürebilir.This method can return another node which itself must be reduced.

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

Bu düğümü daha basit bir ifadeye küçültür.Reduces this node to a simpler expression. Canazaltma doğru döndürürse, bu geçerli bir ifade döndürmelidir.If CanReduce returns true, this should return a valid expression. Bu yöntem, kendisinin düşürülmesi gereken başka bir düğüm döndürebilir.This method can return another node which itself must be reduced.

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

İfadeyi bilinen bir düğüm türüne (uzantı düğüm olmayan) küçültür veya zaten bilinen bir tür ise ifadeyi döndürür.Reduces the expression to a known node type (that is not an Extension node) or just returns the expression if it is already a known type.

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

Öğesinin metinsel gösterimini döndürür Expression .Returns a textual representation of the Expression.

(Devralındığı yer: Expression)
Update(Expression, IEnumerable<ParameterExpression>)

Bunun gibi, ancak sağlanan alt öğeleri kullanarak yeni bir ifade oluşturur.Creates a new expression that is like this one, but using the supplied children. Tüm alt öğeler aynıysa, bu ifade döndürülür.If all of the children are the same, it will return this expression.

VisitChildren(ExpressionVisitor)

Düğümü azaltır ve daha sonra ziyaretçi temsilcisini azaltılmış ifadede çağırır.Reduces the node and then calls the visitor delegate on the reduced expression. Düğüm indirgenmiş değilse yöntem bir özel durum oluşturur.The method throws an exception if the node is not reducible.

(Devralındığı yer: Expression)

Şunlara uygulanır