Metodo LeftShift (Expression, Expression, MethodInfo)
Comprimi il sommario
Espandi il sommario

Metodo Expression.LeftShift (Expression, Expression, MethodInfo)

Aggiornamento: novembre 2007

Crea un oggetto BinaryExpression che rappresenta un'operazione di spostamento a sinistra bit per bit. Il metodo di implementazione può essere specificato.

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

public static BinaryExpression LeftShift(
	Expression left,
	Expression right,
	MethodInfo method
)
public static BinaryExpression LeftShift(
	Expression left,
	Expression right,
	MethodInfo method
)
public static function LeftShift(
	left : Expression, 
	right : Expression, 
	method : MethodInfo
) : BinaryExpression

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.

method
Tipo: System.Reflection.MethodInfo

MethodInfo su cui impostare la proprietà Method.

Valore restituito

Tipo: System.Linq.Expressions.BinaryExpression

BinaryExpression la cui proprietà NodeType è uguale a LeftShift e le cui proprietà Left, Right e Method sono impostate sui valori specificati.

EccezioneCondizione
ArgumentNullException

left o right è null.

ArgumentException

method non è null e il metodo che rappresenta restituisce void, non è static (Shared in Visual Basic) o non accetta esattamente due argomenti.

InvalidOperationException

method è null e l'operatore di spostamento a sinistra 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 method non è null e rappresenta un metodo static (Shared in Visual Basic) non void che accetta due argomenti, è il metodo di implementazione per il nodo.

  • In caso contrario, se la proprietà Type di left o right rappresenta un tipo definito dall'utente che esegue l'overload dell'operatore di spostamento a sinistra, l'oggetto MethodInfo che rappresenta tale metodo è il metodo di implementazione.

  • In caso contrario, se left.Type è un tipo integrale (uno tra Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64 o i tipi nullable corrispondenti) e right.Type è Int32, 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 è elevato. Il tipo del nodo è il tipo di risultato dell'operatore di spostamento a sinistra predefinito.

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

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5

Aggiunte alla community

AGGIUNGI
Mostra:
© 2016 Microsoft