Sdílet prostřednictvím


Expression<TDelegate> Třída

Definice

Představuje výraz lambda silného typu jako datovou strukturu ve formě stromu výrazů. Tato třída se nemůže dědit.

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 delegáta, který Expression<TDelegate> představuje.

Dědičnost
Expression<TDelegate>

Příklady

Následující příklad kódu ukazuje, jak reprezentovat výraz lambda jako spustitelný kód ve formě delegáta a jako data ve formě stromu výrazu. Také ukazuje, jak pomocí metody převést strom výrazů zpět na spustitelný kód 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

Poznámky

Když je výraz lambda přiřazen proměnné, poli nebo parametru, jehož typ je Expression<TDelegate>, kompilátor vygeneruje pokyny k vytvoření stromu výrazů.

Poznámka

Převod z výrazu lambda na typ Expression<D> (Expression(Of D) v jazyce Visual Basic) existuje, pokud existuje převod z výrazu lambda na delegáta typu D . Převod však může selhat, například pokud je tělo výrazu lambda blokem. To znamená, že delegáty a stromy výrazů se chovají podobně s ohledem na rozlišení přetížení.

Strom výrazů je datová reprezentace výrazu lambda v paměti. Struktura výrazu lambda je průhledná a explicitní. S daty ve stromu výrazů můžete pracovat stejně jako s jakoukoli jinou datovou strukturou.

Schopnost nakládat s výrazy jako s datovými strukturami umožňuje rozhraním API přijímat uživatelský kód ve formátu, který lze kontrolovat, transformovat a zpracovávat vlastním způsobem. Například implementace přístupu k datům LINQ to SQL používá tuto možnost k překladu stromů výrazů na příkazy jazyka Transact-SQL, které mohou být vyhodnoceny databází.

Mnoho standardních operátorů dotazu definovaných Queryable ve třídě má jeden nebo více parametrů typu Expression<TDelegate>.

Hodnota NodeType je Expression<TDelegate>Lambda.

K vytvoření objektu použijte metodu Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>)Expression<TDelegate> nebo Lambda<TDelegate>(Expression, ParameterExpression[]) .

Vlastnosti

Body

Získá tělo výrazu lambda.

(Zděděno od LambdaExpression)
CanReduce

Označuje, že uzel lze omezit na jednodušší uzel. Pokud vrátí hodnotu true, lze voláním metody Reduce() vytvořit zmenšenou formu.

(Zděděno od Expression)
Name

Získá název výrazu lambda.

(Zděděno od LambdaExpression)
NodeType

Vrátí typ uzlu tohoto Expressiontypu .

(Zděděno od LambdaExpression)
Parameters

Získá parametry výrazu lambda.

(Zděděno od LambdaExpression)
ReturnType

Získá návratový typ výrazu lambda.

(Zděděno od LambdaExpression)
TailCall

Získá hodnotu, která označuje, zda lambda výraz bude zkompilován s optimalizací koncového volání.

(Zděděno od LambdaExpression)
Type

Získá statický typ výrazu, který představuje Expression .

(Zděděno od LambdaExpression)

Metody

Accept(ExpressionVisitor)

Odešle metodu visit pro tento typ uzlu. MethodCallExpression Například zavolá VisitMethodCall(MethodCallExpression).

(Zděděno od Expression)
Compile()

Zkompiluje výraz lambda popsaný stromem výrazů do spustitelného kódu a vytvoří delegáta, který představuje výraz lambda.

Compile(Boolean)

Zkompiluje výraz lambda popsaný stromem výrazů do interpretovaného nebo zkompilovaného kódu a vytvoří delegáta, který představuje výraz lambda.

Compile(Boolean)

Vytvoří interpretovaný nebo kompilovaný delegát, který představuje výraz lambda.

(Zděděno od LambdaExpression)
Compile(DebugInfoGenerator)

Vytvoří delegáta, který představuje výraz lambda.

Compile(DebugInfoGenerator)

Vytvoří delegáta, který představuje výraz lambda.

(Zděděno od LambdaExpression)
CompileToMethod(MethodBuilder)

Zkompiluje lambda do definice metody.

(Zděděno od LambdaExpression)
CompileToMethod(MethodBuilder, DebugInfoGenerator)

Zkompiluje lambda do definice metody a vlastní informace o ladění.

(Zděděno od LambdaExpression)
Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
Reduce()

Zmenší tento uzel na jednodušší výraz. Pokud CanReduce vrátí hodnotu true, měl by vrátit platný výraz. Tato metoda může vrátit jiný uzel, který sám o sobě musí být snížen.

(Zděděno od Expression)
ReduceAndCheck()

Zmenší tento uzel na jednodušší výraz. Pokud CanReduce vrátí hodnotu true, měl by vrátit platný výraz. Tato metoda může vrátit jiný uzel, který sám o sobě musí být snížen.

(Zděděno od Expression)
ReduceExtensions()

Redukuje výraz na známý typ uzlu (to není uzel rozšíření) nebo pouze vrátí výraz, pokud už je známým typem.

(Zděděno od Expression)
ToString()

Vrátí textovou reprezentaci Expressionhodnoty .

(Zděděno od Expression)
Update(Expression, IEnumerable<ParameterExpression>)

Vytvoří nový výraz, který je podobný tomuto, ale používá zadané podřízené položky. Pokud jsou všechny podřízené položky stejné, vrátí se tento výraz.

VisitChildren(ExpressionVisitor)

Zmenší uzel a pak zavolá delegáta návštěvníka na výrazu reduce. Metoda vyvolá výjimku, pokud uzel není opětovně použitelný.

(Zděděno od Expression)

Platí pro

Viz také