Expression.OrElse Método

Definição

Cria um BinaryExpression que representa uma operação condicional OR que avalia o segundo operando apenas se o primeiro operador avaliar para false.

Sobrecargas

Name Description
OrElse(Expression, Expression)

Cria um BinaryExpression que representa uma operação condicional OR que avalia o segundo operando apenas se o primeiro operando avaliar para false.

OrElse(Expression, Expression, MethodInfo)

Cria um BinaryExpression que representa uma operação condicional OR que avalia o segundo operando apenas se o primeiro operando avaliar para false.

OrElse(Expression, Expression)

Origem:
BinaryExpression.cs
Origem:
BinaryExpression.cs
Origem:
BinaryExpression.cs
Origem:
BinaryExpression.cs
Origem:
BinaryExpression.cs

Cria um BinaryExpression que representa uma operação condicional OR que avalia o segundo operando apenas se o primeiro operando avaliar para 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

Parâmetros

left
Expression

E Expression para definir a Left propriedade igual a .

right
Expression

E Expression para definir a Right propriedade igual a .

Devoluções

A BinaryExpression que tem a NodeType propriedade igual a OrElse e as Left propriedades e Right definidas com os valores especificados.

Exceções

left ou right é null.

O operador bit a OR bit não está definido para left. Tipo e right. Tipo.

-ou-

left. Tipo e right. O tipo não é o mesmo tipo booleano.

Exemplos

O seguinte exemplo de código mostra como criar uma expressão que representa uma operação lógica OR que avalia o segundo operando apenas se o primeiro operando avaliar para 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

Observações

O resultado BinaryExpression tem a Method propriedade definida para o método de implementação. A Type propriedade é definida como o tipo do nó. Se o nó for levantado, ambas as propriedades IsLifted e IsLiftedToNull são true. Caso contrário, são false. A propriedade Conversion é null.

As informações a seguir descrevem o método de implementação, o tipo de nó e se um nó é levantado.

Método de Implementação

As seguintes regras determinam o método de implementação da operação:

  • Se a Type propriedade de ou leftright representa um tipo definido pelo utilizador que sobrecarrega o operador bit a OR bit, o MethodInfo que representa esse método é o método de implementação.

    Note

    O operador condicional OR não pode ser sobrecarregado em C# ou Visual Basic. No entanto, o operador condicional OR é avaliado usando o operador bit a OR bit. Assim, uma sobrecarga definida pelo utilizador do operador bit a OR bit pode ser o método de implementação para este tipo de nó.

  • Caso contrário, se left. Tipo e right. O tipo são tipos booleanos, o método de implementação é null.

Tipo de Nó e Elevado versus Não Elevado

Se o método de execução não for null:

  • Se left. Tipo e right. Tipo são atribuíveis aos tipos de argumento correspondentes do método de implementação, o nó não é levantado. O tipo do nó é o tipo de retorno do método de implementação.

  • Se as duas condições a seguir forem satisfeitas, o nó é levantado e o tipo do nó é o tipo anulável que corresponde ao tipo de retorno do método de implementação:

    • left. Tipo e right. Os tipos são ambos tipos de valor dos quais pelo menos um é nulo, e os tipos correspondentes não nulos são iguais aos tipos de argumentos correspondentes do método implementador.

    • O tipo de retorno do método de implementação é um tipo de valor não anulável.

Se o método de execução for null:

  • left. Tipo e right. O tipo é o mesmo tipo booleano.

  • Se left. Tipo e right. O tipo não é anulável, o nó não é elevado. O tipo do nó é o tipo de resultado do operador condicional OR predefinido.

  • Se left. Tipo e right. O tipo é anulável, o nó é levantado. O tipo do nó é o tipo anulável que corresponde ao tipo de resultado do operador condicional OR predefinido.

Aplica-se a

OrElse(Expression, Expression, MethodInfo)

Origem:
BinaryExpression.cs
Origem:
BinaryExpression.cs
Origem:
BinaryExpression.cs
Origem:
BinaryExpression.cs
Origem:
BinaryExpression.cs

Cria um BinaryExpression que representa uma operação condicional OR que avalia o segundo operando apenas se o primeiro operando avaliar para 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

Parâmetros

left
Expression

E Expression para definir a Left propriedade igual a .

right
Expression

E Expression para definir a Right propriedade igual a .

method
MethodInfo

A MethodInfo para definir a Method propriedade igual a .

Devoluções

A BinaryExpression que tem a NodeType propriedade igual a OrElse e o Left, Right, e Method propriedades definidas com os valores especificados.

Exceções

left ou right é null.

method não é null e o método que representa retorna void, não é static (Shared em Visual Basic), ou não toma exatamente dois argumentos.

method é null e o operador bit OR a bit não está definido para left. Tipo e right. Tipo.

-ou-

method é null e left. Tipo e right. O tipo não é o mesmo tipo booleano.

Observações

O resultado BinaryExpression tem a Method propriedade definida para o método de implementação. A Type propriedade é definida como o tipo do nó. Se o nó for levantado, ambas as propriedades IsLifted e IsLiftedToNull são true. Caso contrário, são false. A propriedade Conversion é null.

As informações a seguir descrevem o método de implementação, o tipo de nó e se um nó é levantado.

Método de Implementação

As seguintes regras determinam o método de implementação da operação:

  • Se method não for null e representar um método não nulo, static (Shared em Visual Basic) que utiliza dois argumentos, é o método de implementação para o nó.

  • Caso contrário, se a Type propriedade de ou leftright representa um tipo definido pelo utilizador que sobrecarrega o operador bit a OR bit, o MethodInfo que representa esse método é o método implementador.

    Note

    O operador condicional OR não pode ser sobrecarregado em C# ou Visual Basic. No entanto, o operador condicional OR é avaliado usando o operador bit a OR bit. Assim, uma sobrecarga definida pelo utilizador do operador bit a OR bit pode ser o método de implementação para este tipo de nó.

  • Caso contrário, se left. Tipo e right. O tipo são tipos booleanos, o método de implementação é null.

Tipo de Nó e Elevado versus Não Elevado

Se o método de execução não for null:

  • Se left. Tipo e right. Tipo são atribuíveis aos tipos de argumento correspondentes do método de implementação, o nó não é levantado. O tipo do nó é o tipo de retorno do método de implementação.

  • Se as duas condições a seguir forem satisfeitas, o nó é levantado e o tipo do nó é o tipo anulável que corresponde ao tipo de retorno do método de implementação:

    • left. Tipo e right. Os tipos são ambos tipos de valor dos quais pelo menos um é nulo, e os tipos correspondentes não nulos são iguais aos tipos de argumentos correspondentes do método implementador.

    • O tipo de retorno do método de implementação é um tipo de valor não anulável.

Se o método de execução for null:

  • left. Tipo e right. O tipo é o mesmo tipo booleano.

  • Se left. Tipo e right. O tipo não é anulável, o nó não é elevado. O tipo do nó é o tipo de resultado do operador condicional OR predefinido.

  • Se left. Tipo e right. O tipo é anulável, o nó é levantado. O tipo do nó é o tipo anulável que corresponde ao tipo de resultado do operador condicional OR predefinido.

Aplica-se a