Expression<TDelegate> Expression<TDelegate> Expression<TDelegate> Expression<TDelegate> Class

Definicja

Reprezentuje wyrażenie lambda silnie typizowane jako struktury danych w formie drzewa wyrażenie.Represents a strongly typed lambda expression as a data structure in the form of an expression tree. Klasa ta nie może być dziedziczona.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

Parametry typu

TDelegate

Typ delegata, Expression<TDelegate> reprezentuje.The type of the delegate that the Expression<TDelegate> represents.

Dziedziczenie
Expression<TDelegate>Expression<TDelegate>Expression<TDelegate>Expression<TDelegate>

Przykłady

Poniższy przykład kodu demonstruje sposób reprezentowania Wyrażenie lambda, zarówno kodu wykonywalnego w postaci obiektu delegowanego, jak i w postaci danych w formie drzewa wyrażenie.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. Ilustruje też sposób włączania drzewa wyrażeń wstecz do pliku wykonywalnego kodu przy użyciu Compile metody.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

Uwagi

Gdy wyrażenie lambda jest przypisany do zmiennej, pole lub parametr, którego typem jest Expression<TDelegate>, kompilator generuje instrukcje dotyczące tworzenia drzewa wyrażeń.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.

Uwaga

Konwersja z typu wyrażenia lambda Expression<D> (Expression(Of D) w języku Visual Basic) istnieje, jeśli Konwersja wyrażenia lambda do delegata typu D istnieje.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. Jednak konwersja może zakończyć się niepowodzeniem, na przykład, jeśli treść wyrażenia lambda jest blokiem.However, the conversion may fail, for example, if the body of the lambda expression is a block. Oznacza to, że delegaci i drzew wyrażeń zachowują się podobnie w odniesieniu do rozwiązania przeciążenia.This means that delegates and expression trees behave similarly with regard to overload resolution.

Drzewo wyrażenia jest reprezentacja danych w pamięci, wyrażenia lambda.The expression tree is an in-memory data representation of the lambda expression. Drzewo wyrażenia sprawia, że struktury wyrażenia lambda można weryfikować i jawne.The expression tree makes the structure of the lambda expression transparent and explicit. Możesz porozmawiać z danych w drzewie wyrażeń podobnie jak inne struktury danych.You can interact with the data in the expression tree just as you can with any other data structure.

Możliwość traktować wyrażenia jako struktur danych umożliwia interfejsów API, aby otrzymać kod użytkownika w formacie, który może być kontrolowane, przekształcane i przetwarzane w sposób niestandardowy.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. Na przykład LINQ do SQLLINQ to SQL wdrożenia dostępu do danych używa tej funkcji do przekształcania drzew wyrażeń do instrukcji języka Transact-SQL, które mogą być obliczane przez bazę danych.For example, the LINQ do SQLLINQ to SQL data access implementation uses this facility to translate expression trees to Transact-SQL statements that can be evaluated by the database.

Wiele standardowych operatorów zapytań zdefiniowanych w Queryable klasa ma co najmniej jeden parametr typu Expression<TDelegate>.Many standard query operators defined in the Queryable class have one or more parameters of type Expression<TDelegate>.

NodeType z Expression<TDelegate> jest Lambda.The NodeType of an Expression<TDelegate> is Lambda.

Użyj Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) lub Lambda<TDelegate>(Expression, ParameterExpression[]) metodę w celu utworzenia Expression<TDelegate> obiektu.Use the Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) or Lambda<TDelegate>(Expression, ParameterExpression[]) method to create an Expression<TDelegate> object.

Metody

Accept(ExpressionVisitor) Accept(ExpressionVisitor) Accept(ExpressionVisitor) Accept(ExpressionVisitor)

Wysyła do konkretnej można znaleźć metody dla tego typu węzła.Dispatches to the specific visit method for this node type. Na przykład MethodCallExpression wywołania VisitMethodCall(MethodCallExpression).For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression).

(Inherited from Expression)
Compile() Compile() Compile() Compile()

Kompiluje Wyrażenie lambda, opisanego przez drzewa wyrażeń do pliku wykonywalnego kodu i tworzy delegata, która reprezentuje wyrażenia lambda.Compiles the lambda expression described by the expression tree into executable code and produces a delegate that represents the lambda expression.

Compile(Boolean) Compile(Boolean) Compile(Boolean) Compile(Boolean)

Kompiluje Wyrażenie lambda, opisanego przez drzewa wyrażeń do interpretowanych i skompilowanych kodu i tworzy delegata, która reprezentuje wyrażenia lambda.Compiles the lambda expression described by the expression tree into interpreted or compiled code and produces a delegate that represents the lambda expression.

Compile(DebugInfoGenerator) Compile(DebugInfoGenerator) Compile(DebugInfoGenerator) Compile(DebugInfoGenerator)

Tworzy delegata, która reprezentuje wyrażenia lambda.Produces a delegate that represents the lambda expression.

CompileToMethod(MethodBuilder) CompileToMethod(MethodBuilder) CompileToMethod(MethodBuilder) CompileToMethod(MethodBuilder)

Kompiluje wyrażenia lambda w definicję metody.Compiles the lambda into a method definition.

(Inherited from LambdaExpression)
CompileToMethod(MethodBuilder, DebugInfoGenerator) CompileToMethod(MethodBuilder, DebugInfoGenerator) CompileToMethod(MethodBuilder, DebugInfoGenerator) CompileToMethod(MethodBuilder, DebugInfoGenerator)

Kompiluje wyrażenia lambda w definicji metody i informacje o debugowaniu niestandardowych.Compiles the lambda into a method definition and custom debug information.

(Inherited from LambdaExpression)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Służy jako domyślnej funkcji skrótu.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Tworzy płytką kopię bieżącego Object.Creates a shallow copy of the current Object.

(Inherited from Object)
Reduce() Reduce() Reduce() Reduce()

Zmniejsza tego węzła w celu prostszego wyrażenia.Reduces this node to a simpler expression. Jeśli CanReduce zwraca wartość true, powinny zostać zwrócone prawidłowe wyrażenie.If CanReduce returns true, this should return a valid expression. Ta metoda może zwrócić inny węzeł, która sama musi zostać obniżona.This method can return another node which itself must be reduced.

(Inherited from Expression)
ReduceAndCheck() ReduceAndCheck() ReduceAndCheck() ReduceAndCheck()

Zmniejsza tego węzła w celu prostszego wyrażenia.Reduces this node to a simpler expression. Jeśli CanReduce zwraca wartość true, powinny zostać zwrócone prawidłowe wyrażenie.If CanReduce returns true, this should return a valid expression. Ta metoda może zwrócić inny węzeł, która sama musi zostać obniżona.This method can return another node which itself must be reduced.

(Inherited from Expression)
ReduceExtensions() ReduceExtensions() ReduceExtensions() ReduceExtensions()

Zmniejsza wyrażenia na typ węzła znane, (który nie jest węzłem rozszerzenia) lub po prostu zwraca wyrażenie, jeśli nie jest jeszcze znany typ.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.

(Inherited from Expression)
ToString() ToString() ToString() ToString()

Zwraca tekstową reprezentację wartości Expression.Returns a textual representation of the Expression.

(Inherited from Expression)
Update(Expression, IEnumerable<ParameterExpression>) Update(Expression, IEnumerable<ParameterExpression>) Update(Expression, IEnumerable<ParameterExpression>) Update(Expression, IEnumerable<ParameterExpression>)

Tworzy nowe wyrażenie, podobnie jak w niej, ale za pomocą podane elementy podrzędne.Creates a new expression that is like this one, but using the supplied children. Jeśli wszystkie elementy podrzędne są takie same, zwróci tego wyrażenia.If all of the children are the same, it will return this expression.

VisitChildren(ExpressionVisitor) VisitChildren(ExpressionVisitor) VisitChildren(ExpressionVisitor) VisitChildren(ExpressionVisitor)

Zmniejsza węzeł, a następnie wywołuje delegata gości na mniejsze wyrażenia.Reduces the node and then calls the visitor delegate on the reduced expression. Metoda zgłasza wyjątek, jeśli węzeł nie jest obniżaniu.The method throws an exception if the node is not reducible.

(Inherited from Expression)

Właściwości

Body Body Body Body

Pobiera treść wyrażenia lambda.Gets the body of the lambda expression.

(Inherited from LambdaExpression)
CanReduce CanReduce CanReduce CanReduce

Wskazuje, że węzeł można zmniejszyć do węzła prostsze.Indicates that the node can be reduced to a simpler node. Jeśli zostanie zwrócona wartość true, można wywołać Reduce() powodować mniejsze formularza.If this returns true, Reduce() can be called to produce the reduced form.

(Inherited from Expression)
Name Name Name Name

Pobiera nazwę wyrażenia lambda.Gets the name of the lambda expression.

(Inherited from LambdaExpression)
NodeType NodeType NodeType NodeType

Zwraca typ węzła Expression.Returns the node type of this Expression.

(Inherited from LambdaExpression)
Parameters Parameters Parameters Parameters

Pobiera parametry wyrażenia lambda.Gets the parameters of the lambda expression.

(Inherited from LambdaExpression)
ReturnType ReturnType ReturnType ReturnType

Pobiera typ zwracany wyrażenia lambda.Gets the return type of the lambda expression.

(Inherited from LambdaExpression)
TailCall TailCall TailCall TailCall

Pobiera wartość wskazującą, jeśli wyrażenie lambda będzie można skompilować przy użyciu optymalizację wywołania tail.Gets the value that indicates if the lambda expression will be compiled with the tail call optimization.

(Inherited from LambdaExpression)
Type Type Type Type

Pobiera typu statycznego wyrażenia, które to Expression reprezentuje.Gets the static type of the expression that this Expression represents.

(Inherited from LambdaExpression)

Dotyczy

Zobacz też