Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe Expression<TDelegate>

 

Data di pubblicazione: ottobre 2016

Rappresenta un'espressione lambda fortemente tipizzata come una struttura di dati sotto forma di un albero delle espressioni. La classe non può essere ereditata.

Spazio dei nomi:   System.Linq.Expressions
Assembly:  System.Core (in System.Core.dll)

System.Object
  System.Linq.Expressions.Expression
    System.Linq.Expressions.LambdaExpression
      System.Linq.Expressions.Expression<TDelegate>

public sealed class Expression<TDelegate> : LambdaExpression

Parametri tipo

TDelegate

Il tipo del delegato che il Expression<TDelegate> rappresenta.

NomeDescrizione
System_CAPS_pubpropertyBody

Ottiene il corpo dell'espressione lambda.(Ereditato da LambdaExpression.)

System_CAPS_pubpropertyCanReduce

Indica che il nodo può essere ridotto a un nodo più semplice. Se restituisce true, è possibile chiamare Reduce() per generare la forma ridotta.(Ereditato da Expression.)

System_CAPS_pubpropertyName

Ottiene il nome dell'espressione lambda.(Ereditato da LambdaExpression.)

System_CAPS_pubpropertyNodeType

Restituisce il tipo di nodo di Expression.(Ereditato da LambdaExpression.)

System_CAPS_pubpropertyParameters

Ottiene i parametri dell'espressione lambda.(Ereditato da LambdaExpression.)

System_CAPS_pubpropertyReturnType

Ottiene il tipo restituito dell'espressione lambda.(Ereditato da LambdaExpression.)

System_CAPS_pubpropertyTailCall

Ottiene il valore che indica se l'espressione lambda verrà compilata con l'ottimizzazione della chiamata tail.(Ereditato da LambdaExpression.)

System_CAPS_pubpropertyType

Ottiene il tipo statico dell'espressione rappresentata da Expression.(Ereditato da LambdaExpression.)

NomeDescrizione
System_CAPS_protmethodAccept(ExpressionVisitor)

Invia al metodo Visit specifico per questo tipo di nodo. Ad esempio, MethodCallExpression chiama VisitMethodCall.(Ereditato da Expression.)

System_CAPS_pubmethodCompile()

Compila l'espressione lambda descritta dall'albero delle espressioni nel codice eseguibile e produce un delegato che rappresenta l'espressione lambda.

System_CAPS_pubmethodCompile(DebugInfoGenerator)

Produce un delegato che rappresenta l'espressione lambda.

System_CAPS_pubmethodCompileToMethod(MethodBuilder)

Compila l'espressione lambda in una definizione di metodo.(Ereditato da LambdaExpression.)

System_CAPS_pubmethodCompileToMethod(MethodBuilder, DebugInfoGenerator)

Compila l'espressione lambda in una definizione del metodo e informazioni di debug personalizzato.(Ereditato da LambdaExpression.)

System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.(Ereditato da Object.)

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodReduce()

Riduce questo nodo a un'espressione più semplice. Se CanReduce restituisce true, deve essere restituita un'espressione valida. Questo metodo può restituire un altro nodo che deve essere a sua volta ridotto.(Ereditato da Expression.)

System_CAPS_pubmethodReduceAndCheck()

Riduce questo nodo a un'espressione più semplice. Se CanReduce restituisce true, deve essere restituita un'espressione valida. Questo metodo può restituire un altro nodo che deve essere a sua volta ridotto.(Ereditato da Expression.)

System_CAPS_pubmethodReduceExtensions()

Riduce l'espressione a un tipo di nodo noto (diverso da un nodo di estensione) o restituisce solo l'espressione se è già un tipo noto.(Ereditato da Expression.)

System_CAPS_pubmethodToString()

Restituisce una rappresentazione testuale di Expression.(Ereditato da Expression.)

System_CAPS_pubmethodUpdate(Expression, IEnumerable<ParameterExpression>)

Crea una nuova espressione simile a questa, ma che usa gli elementi figlio specificati. Se tutti gli elementi figlio sono uguali, verrà restituita questa espressione.

System_CAPS_protmethodVisitChildren(ExpressionVisitor)

Riduce il nodo, quindi chiama il delegato del visitatore sull'espressione ridotta. Se il nodo non è riducibile, il metodo genera un'eccezione.(Ereditato da Expression.)

Quando un'espressione lambda viene assegnata a una variabile, un campo o un parametro il cui tipo è Expression<TDelegate>, il compilatore genera le istruzioni per compilare un albero delle espressioni.

System_CAPS_noteNota

Una conversione da un'espressione lambda per digitare Expression<D> (Expression(Of D) in Visual Basic) è presente se la conversione dall'espressione lambda a un delegato di tipo D esiste. Tuttavia, la conversione potrebbe non riuscire, ad esempio, se il corpo dell'espressione lambda è un blocco. Ciò significa che i delegati e gli alberi delle espressioni comportarsi in modo analogo per quanto riguarda la risoluzione dell'overload.

L'albero delle espressioni è una rappresentazione di dati in memoria dell'espressione lambda. L'albero delle espressioni rende trasparente ed esplicita la struttura dell'espressione lambda. Come con qualsiasi altra struttura di dati, è possibile interagire con i dati dell'albero delle espressioni.

La possibilità di trattare le espressioni come strutture di dati consente alle API di ricevere il codice utente in un formato che può essere controllato, trasformato ed elaborato in modo personalizzato. Ad esempio, il LINQ to SQL implementazione dell'accesso ai dati utilizza questa funzionalità per convertire gli alberi delle espressioni per le istruzioni Transact-SQL che possono essere valutate dal database.

Molti operatori query standard definiti nella Queryable classe dispone di uno o più parametri di tipo Expression<TDelegate>.

Il NodeType di un Expression<TDelegate> è Lambda.

Utilizzare il Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) o Lambda<TDelegate>(Expression, ParameterExpression[]) per creare un Expression<TDelegate> oggetto.

Esempio di codice riportato di seguito viene illustrato come rappresentare un'espressione lambda sia come codice eseguibile sotto forma di un delegato che come dati sotto forma di una struttura ad albero dell'espressione. Viene inoltre illustrato come attivare nuovamente l'albero delle espressioni nel codice eseguibile mediante il Compile metodo.


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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: