Expression.OrElse Expression.OrElse Expression.OrElse Expression.OrElse Method

定義

1 番目のオペランドが BinaryExpression に評価された場合にのみ 2 番目のオペランドを評価する条件付き OR 演算を表す false を作成します。Creates a BinaryExpression that represents a conditional OR operation that evaluates the second operand only if the first operator evaluates to false.

オーバーロード

OrElse(Expression, Expression) OrElse(Expression, Expression) OrElse(Expression, Expression) OrElse(Expression, Expression)

1 番目のオペランドが BinaryExpression に評価された場合にのみ 2 番目のオペランドを評価する条件付き OR 演算を表す false を作成します。Creates a BinaryExpression that represents a conditional OR operation that evaluates the second operand only if the first operand evaluates to false.

OrElse(Expression, Expression, MethodInfo) OrElse(Expression, Expression, MethodInfo) OrElse(Expression, Expression, MethodInfo) OrElse(Expression, Expression, MethodInfo)

1 番目のオペランドが BinaryExpression に評価された場合にのみ 2 番目のオペランドを評価する条件付き OR 演算を表す false を作成します。Creates a BinaryExpression that represents a conditional OR operation that evaluates the second operand only if the first operand evaluates to false.

OrElse(Expression, Expression) OrElse(Expression, Expression) OrElse(Expression, Expression) OrElse(Expression, Expression)

1 番目のオペランドが BinaryExpression に評価された場合にのみ 2 番目のオペランドを評価する条件付き OR 演算を表す false を作成します。Creates a BinaryExpression that represents a conditional OR operation that evaluates the second operand only if the first operand evaluates to 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

パラメーター

left
Expression Expression Expression Expression

Expression プロパティを等しく設定する LeftAn Expression to set the Left property equal to.

right
Expression Expression Expression Expression

Expression プロパティを等しく設定する RightAn Expression to set the Right property equal to.

戻り値

BinaryExpression と等しい NodeType プロパティと、指定した値に設定された OrElse プロパティおよび Left プロパティを含む RightA BinaryExpression that has the NodeType property equal to OrElse and the Left and Right properties set to the specified values.

例外

left または rightnull です。left or right is null.

ビットごとの OR 演算子は、left.Type および right.Type に対して定義されていません。The bitwise OR operator is not defined for left.Type and right.Type.

- または --or- left.Type と right.Type は同じブール型ではありません。left.Type and right.Type are not the same Boolean type.

次のコード例では、最初のオペランドがと評価さORれた場合にfalseのみ2番目のオペランドを評価する論理演算を表す式を作成する方法を示します。The following code example shows how to create an expression that represents a logical OR operation that evaluates the second operand only if the first operand evaluates to 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

注釈

結果とBinaryExpressionしてMethod得られるには、実装メソッドに設定されたプロパティがあります。The resulting BinaryExpression has the Method property set to the implementing method. Typeプロパティは、ノードの型に設定されます。The Type property is set to the type of the node. ノードがリフトされているIsLifted場合IsLiftedToNull 、プロパティとtrueプロパティは両方ともです。If the node is lifted, the IsLifted and IsLiftedToNull properties are both true. それ以外の場合falseは、になります。Otherwise, they are false. Conversion プロパティが null である。The Conversion property is null.

次の情報では、実装メソッド、ノード型、およびノードがリフトされているかどうかについて説明します。The following information describes the implementing method, the node type, and whether a node is lifted.

メソッドの実装Implementing Method

次の規則は、操作の実装方法を決定します。The following rules determine the implementing method for the operation:

  • Type OR MethodInfoまたはのプロパティが、ビットごとの演算子をオーバーロードするユーザー定義型を表している場合、そのメソッドを表すは実装メソッドです。right leftIf the Type property of either left or right represents a user-defined type that overloads the bitwise OR operator, the MethodInfo that represents that method is the implementing method.

    注意

    条件OR演算子は、または Visual Basic C#でオーバーロードすることはできません。The conditional OR operator cannot be overloaded in C# or Visual Basic. ただし、条件OR演算子は、ビットごとORの演算子を使用して評価されます。However, the conditional OR operator is evaluated by using the bitwise OR operator. したがって、ビットごとORの演算子のユーザー定義オーバーロードは、このノード型の実装メソッドにすることができます。Thus, a user-defined overload of the bitwise OR operator can be the implementing method for this node type.

  • それ以外のleft場合は。「」 rightおよび「」と入力します。型はブール型で、実装するメソッドnullはです。Otherwise, if left.Type and right.Type are Boolean types, the implementing method is null.

ノードの種類とリフトされていない、またはリフトされていないNode Type and Lifted versus Non-Lifted

実装するメソッドがでないnull場合は、次のようになります。If the implementing method is not null:

  • left場合。「」 rightおよび「」と入力します。型は、実装するメソッドの対応する引数の型に割り当てることができます。このノードはリフトされていません。If left.Type and right.Type are assignable to the corresponding argument types of the implementing method, the node is not lifted. ノードの型は、実装メソッドの戻り値の型です。The type of the node is the return type of the implementing method.

  • 次の2つの条件が満たされると、ノードがリフトされ、ノードの型が、実装するメソッドの戻り値の型に対応する null 許容型になります。If the following two conditions are satisfied, the node is lifted and the type of the node is the nullable type that corresponds to the return type of the implementing method:

    • left.「」 rightおよび「」と入力します。型は両方とも、少なくとも1つの null 値が許容される値型であり、対応する null 非許容型は、実装するメソッドの対応する引数型と同じです。left.Type and right.Type are both value types of which at least one is nullable, and the corresponding non-nullable types are equal to the corresponding argument types of the implementing method.

    • 実装するメソッドの戻り値の型は、null 非許容の値型です。The return type of the implementing method is a non-nullable value type.

実装するメソッドがのnull場合は、次のようになります。If the implementing method is null:

  • left.「」 rightおよび「」と入力します。型は同じブール型です。left.Type and right.Type are the same Boolean type.

  • left場合。「」 rightおよび「」と入力します。型は null 非許容で、ノードはリフトされていません。If left.Type and right.Type are non-nullable, the node is not lifted. ノードの型は、定義済みの条件OR演算子の結果の型です。The type of the node is the result type of the predefined conditional OR operator.

  • left場合。「」 rightおよび「」と入力します。型は null 値を許容し、ノードはリフトされています。If left.Type and right.Type are nullable, the node is lifted. ノードの型は、定義済みの条件OR演算子の結果の型に対応する null 許容型です。The type of the node is the nullable type that corresponds to the result type of the predefined conditional OR operator.

OrElse(Expression, Expression, MethodInfo) OrElse(Expression, Expression, MethodInfo) OrElse(Expression, Expression, MethodInfo) OrElse(Expression, Expression, MethodInfo)

1 番目のオペランドが BinaryExpression に評価された場合にのみ 2 番目のオペランドを評価する条件付き OR 演算を表す false を作成します。Creates a BinaryExpression that represents a conditional OR operation that evaluates the second operand only if the first operand evaluates to 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);
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

パラメーター

left
Expression Expression Expression Expression

Expression プロパティを等しく設定する LeftAn Expression to set the Left property equal to.

right
Expression Expression Expression Expression

Expression プロパティを等しく設定する RightAn Expression to set the Right property equal to.

method
MethodInfo MethodInfo MethodInfo MethodInfo

MethodInfo プロパティを等しく設定する MethodA MethodInfo to set the Method property equal to.

戻り値

BinaryExpression と等しい NodeType プロパティと、指定した値に設定された OrElseLeft、および Right の各プロパティを含む MethodA BinaryExpression that has the NodeType property equal to OrElse and the Left, Right, and Method properties set to the specified values.

例外

left または rightnull です。left or right is null.

methodnull ではなく、それを表すメソッドは void を返し、static (Visual Basic では Shared) ではなく、またはちょうど 2 つの引数を受け取りません。method is not null and the method it represents returns void, is not static (Shared in Visual Basic), or does not take exactly two arguments.

methodnull で、left.Type および right.Type にはビット処理 OR 演算子が定義されていません。method is null and the bitwise OR operator is not defined for left.Type and right.Type.

または-or- methodnull で、left.Type と right.Type は同じブール型ではありません。method is null and left.Type and right.Type are not the same Boolean type.

注釈

結果とBinaryExpressionしてMethod得られるには、実装メソッドに設定されたプロパティがあります。The resulting BinaryExpression has the Method property set to the implementing method. Typeプロパティは、ノードの型に設定されます。The Type property is set to the type of the node. ノードがリフトされているIsLifted場合IsLiftedToNull 、プロパティとtrueプロパティは両方ともです。If the node is lifted, the IsLifted and IsLiftedToNull properties are both true. それ以外の場合falseは、になります。Otherwise, they are false. Conversion プロパティが null である。The Conversion property is null.

次の情報では、実装メソッド、ノード型、およびノードがリフトされているかどうかについて説明します。The following information describes the implementing method, the node type, and whether a node is lifted.

メソッドの実装Implementing Method

次の規則は、操作の実装方法を決定します。The following rules determine the implementing method for the operation:

  • methodではnullなく、2つの引数を受け取るstatic voidShared以外の (Visual Basic) メソッドを表す場合は、ノードの実装メソッドです。If method is not null and it represents a non-void, static (Shared in Visual Basic) method that takes two arguments, it is the implementing method for the node.

  • それ以外の場合Typeleftまたはrightのプロパティが、ビットごとORの演算子をオーバーロードするユーザー定義型MethodInfoを表している場合、そのメソッドを表すは実装メソッドです。Otherwise, if the Type property of either left or right represents a user-defined type that overloads the bitwise OR operator, the MethodInfo that represents that method is the implementing method.

    注意

    条件OR演算子は、または Visual Basic C#でオーバーロードすることはできません。The conditional OR operator cannot be overloaded in C# or Visual Basic. ただし、条件OR演算子は、ビットごとORの演算子を使用して評価されます。However, the conditional OR operator is evaluated by using the bitwise OR operator. したがって、ビットごとORの演算子のユーザー定義オーバーロードは、このノード型の実装メソッドにすることができます。Thus, a user-defined overload of the bitwise OR operator can be the implementing method for this node type.

  • それ以外のleft場合は。「」 rightおよび「」と入力します。型はブール型で、実装するメソッドnullはです。Otherwise, if left.Type and right.Type are Boolean types, the implementing method is null.

ノードの種類とリフトされていない、またはリフトされていないNode Type and Lifted versus Non-Lifted

実装するメソッドがでないnull場合は、次のようになります。If the implementing method is not null:

  • left場合。「」 rightおよび「」と入力します。型は、実装するメソッドの対応する引数の型に割り当てることができます。このノードはリフトされていません。If left.Type and right.Type are assignable to the corresponding argument types of the implementing method, the node is not lifted. ノードの型は、実装メソッドの戻り値の型です。The type of the node is the return type of the implementing method.

  • 次の2つの条件が満たされると、ノードがリフトされ、ノードの型が、実装するメソッドの戻り値の型に対応する null 許容型になります。If the following two conditions are satisfied, the node is lifted and the type of the node is the nullable type that corresponds to the return type of the implementing method:

    • left.「」 rightおよび「」と入力します。型は両方とも、少なくとも1つの null 値が許容される値型であり、対応する null 非許容型は、実装するメソッドの対応する引数型と同じです。left.Type and right.Type are both value types of which at least one is nullable, and the corresponding non-nullable types are equal to the corresponding argument types of the implementing method.

    • 実装するメソッドの戻り値の型は、null 非許容の値型です。The return type of the implementing method is a non-nullable value type.

実装するメソッドがのnull場合は、次のようになります。If the implementing method is null:

  • left.「」 rightおよび「」と入力します。型は同じブール型です。left.Type and right.Type are the same Boolean type.

  • left場合。「」 rightおよび「」と入力します。型は null 非許容で、ノードはリフトされていません。If left.Type and right.Type are non-nullable, the node is not lifted. ノードの型は、定義済みの条件OR演算子の結果の型です。The type of the node is the result type of the predefined conditional OR operator.

  • left場合。「」 rightおよび「」と入力します。型は null 値を許容し、ノードはリフトされています。If left.Type and right.Type are nullable, the node is lifted. ノードの型は、定義済みの条件OR演算子の結果の型に対応する null 許容型です。The type of the node is the nullable type that corresponds to the result type of the predefined conditional OR operator.

適用対象