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
Questa documentazione è stata archiviata e non viene gestita.

Metodo Expression.Multiply (Expression, Expression)

Crea un oggetto BinaryExpression che rappresenta un'operazione di moltiplicazione aritmetica che non ha il controllo dell'overflow.

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

public static BinaryExpression Multiply(
	Expression left,
	Expression right
)

Parametri

left
Tipo: System.Linq.Expressions.Expression
Expression su cui impostare la proprietà Left.
right
Tipo: System.Linq.Expressions.Expression
Expression su cui impostare la proprietà Right.

Valore restituito

Tipo: System.Linq.Expressions.BinaryExpression
BinaryExpression la cui proprietà NodeType è uguale a Multiply e le cui proprietà Left e Right sono impostate sui valori specificati.

EccezioneCondizione
ArgumentNullException

left o right è null.

InvalidOperationException

L'operatore di moltiplicazione non è definito per left.Type e right.Type.

La proprietà Method dell'oggetto BinaryExpression risultante è impostata sul metodo di implementazione. La proprietà Type è impostata sul tipo del nodo. Se il nodo è elevato, le proprietà IsLifted e IsLiftedToNull sono entrambe true. In caso contrario, sono false. La proprietà Conversion è null.

Nelle informazioni seguenti vengono descritti il metodo di implementazione e il tipo di nodo e viene illustrato se un nodo è elevato o meno.

Metodo di implementazione

Le regole seguenti determinano il metodo di implementazione selezionato per l'operazione:

  • Se la proprietà Type di left o right rappresenta un tipo definito dall'utente che esegue l'overload dell'operatore di moltiplicazione, l'oggetto MethodInfo che rappresenta tale metodo è il metodo di implementazione.

  • In caso contrario, se left.Type e right.Type sono tipi numerici, il metodo di implementazione è null.

Tipo di nodo e nodo elevato o non elevato

Se il metodo di implementazione non è null:

  • Se left.Type e right.Type sono assegnabili ai tipi di argomento corrispondenti del metodo di implementazione, il nodo non è elevato. Il tipo del nodo è il tipo restituito del metodo di implementazione.

  • Se le due condizioni seguenti vengono soddisfatte, il nodo è elevato e il tipo del nodo è il tipo nullable che corrisponde al tipo restituito del metodo di implementazione:

    • left.Type e right.Type sono entrambi tipi valore di cui almeno uno è nullable e i tipi non nullable corrispondenti sono uguali ai tipi di argomento corrispondenti del metodo di implementazione.

    • Il tipo restituito del metodo di implementazione è un tipo valore non nullable.

Se il metodo di implementazione è null:

  • Se left.Type e right.Type sono entrambi non nullable, il nodo non viene elevato. Il tipo del nodo è il tipo di risultato dell'operatore di moltiplicazione predefinito.

  • Se left.Type e right.Type sono entrambi nullable, il nodo viene elevato. Il tipo del nodo è il tipo nullable che corrisponde al tipo di risultato dell'operatore di moltiplicazione predefinito.

Nell'esempio di codice riportato di seguito viene illustrato come creare un'espressione che moltiplica due valori.


// Add the following directive to your file:
// using System.Linq.Expressions;  

// This expression multiplies its two arguments.
// Both arguments must be of the same type.
Expression multiplyExpr = Expression.Multiply(
    Expression.Constant(10),
    Expression.Constant(4)
);

// Print out the expression.
Console.WriteLine(multiplyExpr.ToString());

// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(
    Expression.Lambda<Func<int>>(multiplyExpr).Compile()());

// This code example produces the following output:
//
// (10*4)
// 40


.NET Framework

Supportato in: 4, 3.5

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Supportato in:

Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Mostra: