Expression.OrElse Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Crea un objeto BinaryExpression que representa una operación OR
condicional que evalúa el segundo operando únicamente si el primer operador se evalúa como false
.
Sobrecargas
OrElse(Expression, Expression) |
Crea un objeto BinaryExpression que representa una operación |
OrElse(Expression, Expression, MethodInfo) |
Crea un objeto BinaryExpression que representa una operación |
OrElse(Expression, Expression)
- Source:
- BinaryExpression.cs
- Source:
- BinaryExpression.cs
- Source:
- BinaryExpression.cs
Crea un objeto BinaryExpression que representa una operación OR
condicional que evalúa el segundo operando únicamente si el primer operando se evalúa como 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
Objeto Expression en el que se va a establecer la propiedad Left.
- right
- Expression
Objeto Expression en el que se va a establecer la propiedad Right.
Devoluciones
BinaryExpression cuya propiedad NodeType es OrElse y cuyas propiedades Left y Right se establecen en los valores especificados.
Excepciones
left
o right
es null
.
No hay ningún operador OR
bit a bit definido para left
.Type y right
.Type.
o bien
left
.Type y right
.Type no son del mismo tipo booleano.
Ejemplos
En el ejemplo de código siguiente se muestra cómo crear una expresión que representa una operación lógica OR
que evalúa el segundo operando solo si el primer operando se evalúa como 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
Comentarios
El resultado BinaryExpression tiene la Method propiedad establecida en el método de implementación. La Type propiedad se establece en el tipo del nodo. Si se levanta el nodo, las IsLifted propiedades y IsLiftedToNull son true
. De lo contrario, son false
. La propiedad Conversion es null
.
En la siguiente información se describe el método de implementación, el tipo de nodo y si se levanta un nodo.
Método de implementación
Las reglas siguientes determinan el método de implementación para la operación:
Si la Type propiedad de o
left
right
representa un tipo definido por el usuario que sobrecarga el operador bit a bitOR
, el MethodInfo que representa ese método es el método de implementación.Nota
El operador condicional
OR
no se puede sobrecargar en C# o Visual Basic. Sin embargo, el operador condicionalOR
se evalúa mediante el operador bit a bitOR
. Por lo tanto, una sobrecarga definida por el usuario del operador bit a bitOR
puede ser el método de implementación para este tipo de nodo.De lo contrario, si
left
es . Escriba yright
. El tipo son tipos booleanos, el método de implementación esnull
.
Tipo de nodo y elevación frente a no elevado
Si el método de implementación no null
es :
Si
left
es . Escriba yright
. El tipo se puede asignar a los tipos de argumento correspondientes del método de implementación, el nodo no se levanta. El tipo del nodo es el tipo de valor devuelto del método de implementación.Si se cumplen las dos condiciones siguientes, se levanta el nodo y el tipo del nodo es el tipo que acepta valores NULL que corresponde al tipo de valor devuelto del método de implementación:
left
. Escriba yright
. El tipo son tipos de valor de los que al menos uno acepta valores NULL y los tipos que no aceptan valores NULL correspondientes son iguales a los tipos de argumento correspondientes del método de implementación.El tipo de valor devuelto del método de implementación es un tipo de valor que no acepta valores NULL.
Si el método de implementación es null
:
left
. Escriba yright
. El tipo es el mismo tipo booleano.Si
left
es . Escriba yright
. El tipo no acepta valores NULL, el nodo no se levanta. El tipo del nodo es el tipo de resultado del operador condicionalOR
predefinido.Si
left
es . Escriba yright
. El tipo acepta valores NULL, se levanta el nodo. El tipo del nodo es el tipo que acepta valores NULL que corresponde al tipo de resultado del operador condicionalOR
predefinido.
Se aplica a
OrElse(Expression, Expression, MethodInfo)
- Source:
- BinaryExpression.cs
- Source:
- BinaryExpression.cs
- Source:
- BinaryExpression.cs
Crea un objeto BinaryExpression que representa una operación OR
condicional que evalúa el segundo operando únicamente si el primer operando se evalúa como 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
Objeto Expression en el que se va a establecer la propiedad Left.
- right
- Expression
Objeto Expression en el que se va a establecer la propiedad Right.
- method
- MethodInfo
MethodInfo en el que se va a establecer la propiedad Method.
Devoluciones
BinaryExpression cuya propiedad NodeType es OrElse y Left, Right y Method se establecen en los valores especificados.
Excepciones
left
o right
es null
.
method
no es null
y el método que representa devuelve void
, no es static
(Shared
en Visual Basic) o no toma exactamente dos argumentos.
method
es null
y el operador OR
bit a bit no está definido para left
.Type y right
.Type.
o bien
method
es null
y left
.Type y right
.Type no son del mismo tipo booleano.
Comentarios
El resultado BinaryExpression tiene la Method propiedad establecida en el método de implementación. La Type propiedad se establece en el tipo del nodo. Si se levanta el nodo, las IsLifted propiedades y IsLiftedToNull son true
. De lo contrario, son false
. La propiedad Conversion es null
.
En la siguiente información se describe el método de implementación, el tipo de nodo y si se levanta un nodo.
Método de implementación
Las reglas siguientes determinan el método de implementación para la operación:
Si
method
nonull
es y representa un método no void(static
Shared
en Visual Basic) que toma dos argumentos, es el método de implementación para el nodo.De lo contrario, si la Type propiedad de o
right
left
representa un tipo definido por el usuario que sobrecarga el operador bit a bitOR
, que MethodInfo representa ese método es el método de implementación.Nota
El operador condicional
OR
no se puede sobrecargar en C# o Visual Basic. Sin embargo, el operador condicionalOR
se evalúa mediante el operador bit a bitOR
. Por lo tanto, una sobrecarga definida por el usuario del operador bit a bitOR
puede ser el método de implementación para este tipo de nodo.De lo contrario, si
left
es . Escriba yright
. El tipo son tipos booleanos, el método de implementación esnull
.
Tipo de nodo y elevación frente a no elevado
Si el método de implementación no null
es :
Si
left
es . Escriba yright
. El tipo se puede asignar a los tipos de argumento correspondientes del método de implementación, el nodo no se levanta. El tipo del nodo es el tipo de valor devuelto del método de implementación.Si se cumplen las dos condiciones siguientes, se levanta el nodo y el tipo del nodo es el tipo que acepta valores NULL que corresponde al tipo de valor devuelto del método de implementación:
left
. Escriba yright
. El tipo son tipos de valor de los que al menos uno acepta valores NULL y los tipos que no aceptan valores NULL correspondientes son iguales a los tipos de argumento correspondientes del método de implementación.El tipo de valor devuelto del método de implementación es un tipo de valor que no acepta valores NULL.
Si el método de implementación es null
:
left
. Escriba yright
. El tipo es el mismo tipo booleano.Si
left
es . Escriba yright
. El tipo no acepta valores NULL, el nodo no se levanta. El tipo del nodo es el tipo de resultado del operador condicionalOR
predefinido.Si
left
es . Escriba yright
. El tipo acepta valores NULL, se levanta el nodo. El tipo del nodo es el tipo que acepta valores NULL que corresponde al tipo de resultado del operador condicionalOR
predefinido.