Condividi tramite


Expression.OrElse Metodo

Definizione

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

Overload

OrElse(Expression, Expression)

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

OrElse(Expression, Expression, MethodInfo)

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

OrElse(Expression, Expression)

Origine:
BinaryExpression.cs
Origine:
BinaryExpression.cs
Origine:
BinaryExpression.cs

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

public:
 static System::Linq::Expressions::BinaryExpression ^ OrElse(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right);
public static System.Linq.Expressions.BinaryExpression OrElse (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right);
static member OrElse : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BinaryExpression
Public Shared Function OrElse (left As Expression, right As Expression) As BinaryExpression

Parametri

left
Expression

Oggetto Expression su cui impostare la proprietà Left.

right
Expression

Oggetto Expression su cui impostare la proprietà Right.

Restituisce

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

Eccezioni

left o right è null.

L'operatore OR bit per bit non è definito per left.Type e right.Type.

-oppure-

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

Esempio

Nell'esempio di codice seguente viene illustrato come creare un'espressione che rappresenta un'operazione logica OR 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
' Add the following directive to your file:
' Imports System.Linq.Expressions  

' This expression perfroms a logical OR operation
' on its two arguments, but if the first argument is true,
' the second arument is not evaluated.
' Both arguments must be of the Boolean type.
Dim orElseExpr As Expression = Expression.OrElse(
     Expression.Constant(False),
     Expression.Constant(True)
 )

' Print 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(Of Func(Of Boolean))(orElseExpr).Compile()())

' This code example produces the following output:
'
' (False OrElse True)
' True

Commenti

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

Le informazioni seguenti descrivono il metodo di implementazione, il tipo di nodo e l'accuratezza di un nodo.

Metodo di implementazione

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

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

    Nota

    L'operatore condizionale OR non può essere sottoposto a overload in C# o Visual Basic. Tuttavia, l'operatore condizionale OR viene valutato usando l'operatore bit per OR bit. Di conseguenza, un overload definito dall'utente dell'operatore bit per OR bit può essere il metodo di implementazione per questo tipo di nodo.

  • In caso contrario, se left. Digitare e right. Il tipo sono tipi booleani, il metodo di implementazione è null.

Tipo di nodo e lifting rispetto a non lifted

Se il metodo di implementazione non nullè :

  • Se left. Digitare e right. Il tipo è assegnabile ai tipi di argomento corrispondenti del metodo di implementazione, il nodo non viene sollevato. Il tipo del nodo è il tipo restituito del metodo di implementazione.

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

    • left. Digitare e right. Il tipo è 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:

  • left. Digitare e right. Il tipo è lo stesso tipo booleano.

  • Se left. Digitare e right. Il tipo non è nullable, il nodo non viene sollevato. Il tipo del nodo è il tipo di risultato dell'operatore condizionale OR predefinito.

  • Se left. Digitare e right. Il tipo è nullable, il nodo viene sollevato. Il tipo del nodo è il tipo nullable che corrisponde al tipo di risultato dell'operatore condizionale OR predefinito.

Si applica a

OrElse(Expression, Expression, MethodInfo)

Origine:
BinaryExpression.cs
Origine:
BinaryExpression.cs
Origine:
BinaryExpression.cs

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

public:
 static System::Linq::Expressions::BinaryExpression ^ OrElse(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.BinaryExpression OrElse (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.BinaryExpression OrElse (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo? method);
static member OrElse : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo -> System.Linq.Expressions.BinaryExpression
Public Shared Function OrElse (left As Expression, right As Expression, method As MethodInfo) As BinaryExpression

Parametri

left
Expression

Oggetto Expression su cui impostare la proprietà Left.

right
Expression

Oggetto Expression su cui impostare la proprietà Right.

method
MethodInfo

Oggetto MethodInfo su cui impostare la proprietà Method.

Restituisce

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

Eccezioni

left o right è null.

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

method è null e l'operatore bit per bit OR non è definito per i tipi left.Type e right.Type.

-oppure-

method è null e left.Type e right.Type non sono dello stesso tipo Boolean.

Commenti

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

Le informazioni seguenti descrivono il metodo di implementazione, il tipo di nodo e l'accuratezza di un nodo.

Metodo di implementazione

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

  • Se method non null è e rappresenta un metodo non void, static (Shared in Visual Basic) che accetta due argomenti, è il metodo di implementazione per il nodo.

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

    Nota

    L'operatore condizionale OR non può essere sottoposto a overload in C# o Visual Basic. Tuttavia, l'operatore condizionale OR viene valutato usando l'operatore bit per OR bit. Di conseguenza, un overload definito dall'utente dell'operatore bit per OR bit può essere il metodo di implementazione per questo tipo di nodo.

  • In caso contrario, se left. Digitare e right. Il tipo sono tipi booleani, il metodo di implementazione è null.

Tipo di nodo e lifting rispetto a non lifted

Se il metodo di implementazione non nullè :

  • Se left. Digitare e right. Il tipo è assegnabile ai tipi di argomento corrispondenti del metodo di implementazione, il nodo non viene sollevato. Il tipo del nodo è il tipo restituito del metodo di implementazione.

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

    • left. Digitare e right. Il tipo è 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:

  • left. Digitare e right. Il tipo è lo stesso tipo booleano.

  • Se left. Digitare e right. Il tipo non è nullable, il nodo non viene sollevato. Il tipo del nodo è il tipo di risultato dell'operatore condizionale OR predefinito.

  • Se left. Digitare e right. Il tipo è nullable, il nodo viene sollevato. Il tipo del nodo è il tipo nullable che corrisponde al tipo di risultato dell'operatore condizionale OR predefinito.

Si applica a