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

Metodo Expression.OrElse (Expression, Expression)

 

Data di pubblicazione: ottobre 2016

Crea un oggetto BinaryExpression che rappresenta un'operazione OR condizionale che valuta il secondo operando solo se il primo operando restituisce false.

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

public static BinaryExpression OrElse(
	Expression left,
	Expression right
)

Parametri

left
Type: System.Linq.Expressions.Expression

Oggetto Expression su cui impostare la proprietà Left.

right
Type: System.Linq.Expressions.Expression

Oggetto Expression su cui impostare la proprietà Right.

Valore restituito

Type: System.Linq.Expressions.BinaryExpression

Oggetto BinaryExpression la cui proprietà NodeType è uguale a OrElse e le cui proprietà Left e Right sono impostate sui valori specificati.

Exception Condition
ArgumentNullException

left o right è null.

InvalidOperationException

Bit per bit OR operatore non è definito per left. Tipo e right. Tipo.

-oppure-

left. Tipo e right. Tipo non sono dello stesso tipo Boolean.

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

Di seguito viene descritto il metodo di implementazione, il tipo di nodo, e se un nodo è elevato.

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

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

    System_CAPS_noteNota

    Condizionale OR operatore non può essere sottoposto a overload in c# o Visual Basic. Tuttavia, condizionale OR operatore viene valutato utilizzando bit per bit OR operatore. Pertanto, un overload definito dall'utente di bit per bit OR operatore può essere il metodo di implementazione per questo tipo di nodo.

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

Se il metodo di implementazione non null:

  • Se left. Tipo e right. Tipo possano essere assegnati ai corrispondenti tipi di argomento del metodo di implementazione, il nodo non è elevato. Il tipo del nodo è il tipo restituito del metodo di implementazione.

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

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

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

Se il metodo di implementazione è null:

  • left. Tipo e right. Tipo sono dello stesso tipo Boolean.

  • Se left. Tipo e right. Type sono non nullable, il nodo non è elevato. Il tipo del nodo è il tipo di risultato di condizionale predefinito OR operatore.

  • Se left. Tipo e right. Type sono nullable, il nodo è elevato. Il tipo del nodo è di tipo nullable che corrisponde al tipo di risultato di condizionale predefinito OR operatore.

Esempio di codice seguente viene illustrato come creare un'espressione che rappresenta un operatore logico OR operazione che valuta il secondo operando solo se il primo operando restituisce false.

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

// This expression perfroms a logical OR operation
// on its two arguments, but if the first argument is true,
// then the second arument is not evaluated.
// Both arguments must be of the boolean type.
Expression orElseExpr = Expression.OrElse(
    Expression.Constant(false),
    Expression.Constant(true)
);

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

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

// This code example produces the following output:
//
// (False OrElse True)
// 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
Torna all'inizio
Mostra: