Expression<TDelegate> Klasa

Definicja

Reprezentuje silnie wpisane wyrażenie lambda jako strukturę danych w postaci drzewa wyrażenia.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, który Expression<TDelegate> reprezentuje.The type of the delegate that the Expression<TDelegate> represents.

Dziedziczenie
Expression<TDelegate>

Przykłady

Poniższy przykład kodu demonstruje, jak reprezentować wyrażenie lambda zarówno jako kod wykonywalny w formie delegata, jak i jako dane w postaci drzewa wyrażenia.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. Pokazano również, jak przekształcić drzewo wyrażeń z powrotem do kodu wykonywalnego za pomocą 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 przypisane do zmiennej, pola lub parametru, którego typem jest Expression<TDelegate> , kompilator emituje instrukcje w celu skompilowania drzewa wyrażenia.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 wyrażenia lambda do typu Expression<D> ( Expression(Of D) w Visual Basic) istnieje, jeśli konwersja z 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 się nie powieść, 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 Delegaty i drzewa wyrażeń zachowują się podobnie w odniesieniu do rozdzielczości przeciążenia.This means that delegates and expression trees behave similarly with regard to overload resolution.

Drzewo wyrażenia jest reprezentacją danych w pamięci wyrażenia lambda.The expression tree is an in-memory data representation of the lambda expression. Drzewo wyrażenia powoduje, że struktura wyrażenia lambda jest przezroczysta i jawna.The expression tree makes the structure of the lambda expression transparent and explicit. Można korzystać z danych w drzewie wyrażenia tak samo jak w przypadku każdej innej struktury danych.You can interact with the data in the expression tree just as you can with any other data structure.

Możliwość traktowania wyrażeń jako struktur danych umożliwia interfejsom API otrzymywanie kodu użytkownika w formacie, który może być sprawdzany, przekształcony i przetwarzany 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 implementacja dostępu do danych LINQ to SQL korzysta z tej funkcji do tłumaczenia drzew wyrażeń na instrukcje języka Transact-SQL, które mogą być oceniane przez bazę danych.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.

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

NodeType Expression<TDelegate> Jest to Lambda .The NodeType of an Expression<TDelegate> is Lambda.

Użyj Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) metody lub, Lambda<TDelegate>(Expression, ParameterExpression[]) Aby utworzyć Expression<TDelegate> obiekt.Use the Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) or Lambda<TDelegate>(Expression, ParameterExpression[]) method to create an Expression<TDelegate> object.

Właściwości

Body

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

(Odziedziczone po LambdaExpression)
CanReduce

Wskazuje, że węzeł można zmniejszyć do prostszego węzła.Indicates that the node can be reduced to a simpler node. Jeśli zwraca wartość true, funkcja Zmniejsz () może zostać wywołana w celu utworzenia zredukowanego formularza.If this returns true, Reduce() can be called to produce the reduced form.

(Odziedziczone po Expression)
Name

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

(Odziedziczone po LambdaExpression)
NodeType

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

(Odziedziczone po LambdaExpression)
Parameters

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

(Odziedziczone po LambdaExpression)
ReturnType

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

(Odziedziczone po LambdaExpression)
TailCall

Pobiera wartość wskazującą, czy wyrażenie lambda zostanie skompilowane z optymalizacją wywołania tail.Gets the value that indicates if the lambda expression will be compiled with the tail call optimization.

(Odziedziczone po LambdaExpression)
Type

Pobiera typ statyczny wyrażenia reprezentowanego przez to wyrażenie Expression .Gets the static type of the expression that this Expression represents.

(Odziedziczone po LambdaExpression)

Metody

Accept(ExpressionVisitor)

Wysyła do określonej metody odwiedzin dla tego typu węzła.Dispatches to the specific visit method for this node type. Na przykład program MethodCallExpression wywołuje VisitMethodCall(MethodCallExpression) .For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression).

(Odziedziczone po Expression)
Compile()

Kompiluje wyrażenie lambda opisane przez drzewo wyrażenia do kodu wykonywalnego i tworzy delegata reprezentujący wyrażenie lambda.Compiles the lambda expression described by the expression tree into executable code and produces a delegate that represents the lambda expression.

Compile(Boolean)

Kompiluje wyrażenie lambda opisane przez drzewo wyrażenia w kodzie interpretowanym lub skompilowanym i tworzy delegata reprezentujący wyrażenie 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(Boolean)

Tworzy interpretowany lub skompilowany delegat reprezentujący wyrażenie lambda.Produces an interpreted or compiled delegate that represents the lambda expression.

(Odziedziczone po LambdaExpression)
Compile(DebugInfoGenerator)

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

Compile(DebugInfoGenerator)

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

(Odziedziczone po LambdaExpression)
CompileToMethod(MethodBuilder)

Kompiluje wyrażenie lambda do definicji metody.Compiles the lambda into a method definition.

(Odziedziczone po LambdaExpression)
CompileToMethod(MethodBuilder, DebugInfoGenerator)

Kompiluje wyrażenie lambda do definicji metody i informacji o debugowaniu niestandardowym.Compiles the lambda into a method definition and custom debug information.

(Odziedziczone po LambdaExpression)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetHashCode()

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

(Odziedziczone po Object)
GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
Reduce()

Redukuje ten węzeł do prostszego wyrażenia.Reduces this node to a simpler expression. Jeśli redukcja zwróci wartość true, powinna zwracać prawidłowe wyrażenie.If CanReduce returns true, this should return a valid expression. Ta metoda może zwrócić inny węzeł, który musi zostać zmniejszony.This method can return another node which itself must be reduced.

(Odziedziczone po Expression)
ReduceAndCheck()

Redukuje ten węzeł do prostszego wyrażenia.Reduces this node to a simpler expression. Jeśli redukcja zwróci wartość true, powinna zwracać prawidłowe wyrażenie.If CanReduce returns true, this should return a valid expression. Ta metoda może zwrócić inny węzeł, który musi zostać zmniejszony.This method can return another node which itself must be reduced.

(Odziedziczone po Expression)
ReduceExtensions()

Redukuje wyrażenie do znanego typu węzła (który nie jest węzłem rozszerzenia) lub po prostu zwraca wyrażenie, jeśli jest już znanym typem.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.

(Odziedziczone po Expression)
ToString()

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

(Odziedziczone po Expression)
Update(Expression, IEnumerable<ParameterExpression>)

Tworzy nowe wyrażenie, które jest podobne do tego, ale przy użyciu podanych elementów podrzędnych.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 wyrażenie.If all of the children are the same, it will return this expression.

VisitChildren(ExpressionVisitor)

Redukuje węzeł, a następnie wywołuje delegata odwiedzających na zmniejszonym wyrażeniu.Reduces the node and then calls the visitor delegate on the reduced expression. Metoda zgłasza wyjątek, jeśli węzeł nie jest możliwe do zredukowania.The method throws an exception if the node is not reducible.

(Odziedziczone po Expression)

Dotyczy