Expression.ExclusiveOr 方法
定義
建立表示位元 BinaryExpression 運算的 XOR
。Creates a BinaryExpression that represents a bitwise XOR
operation.
多載
ExclusiveOr(Expression, Expression, MethodInfo) |
使用 |
ExclusiveOr(Expression, Expression) |
使用 |
ExclusiveOr(Expression, Expression, MethodInfo)
使用 op_ExclusiveOr
作為使用者定義型別,建立表示位元 XOR
運算的 BinaryExpression。Creates a BinaryExpression that represents a bitwise XOR
operation, using op_ExclusiveOr
for user-defined types. 實作的方法可加以指定。The implementing method can be specified.
public:
static System::Linq::Expressions::BinaryExpression ^ ExclusiveOr(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.BinaryExpression ExclusiveOr (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.BinaryExpression ExclusiveOr (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo? method);
static member ExclusiveOr : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo -> System.Linq.Expressions.BinaryExpression
Public Shared Function ExclusiveOr (left As Expression, right As Expression, method As MethodInfo) As BinaryExpression
參數
- left
- Expression
要將 Expression 屬性設定為與之相等的 Left。An Expression to set the Left property equal to.
- right
- Expression
要將 Expression 屬性設定為與之相等的 Right。An Expression to set the Right property equal to.
- method
- MethodInfo
要將 MethodInfo 屬性設定為與之相等的 Method。A MethodInfo to set the Method property equal to.
傳回
BinaryExpression,其 NodeType 屬性等於 ExclusiveOr,且 Left、Right 和 Method 屬性設定為指定的值。A BinaryExpression that has the NodeType property equal to ExclusiveOr and the Left, Right, and Method properties set to the specified values.
例外狀況
left
或 right
為 null
。left
or right
is null
.
method
不是 null
,而它所代表的方法會傳回 void
、不是 static
(Visual Basic 中的 Shared
),或者未確切採用兩個引數。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.
method
是 null
,而且未定義類型 left
.Type 和 right
.Type 的 XOR
運算子。method
is null
and the XOR
operator is not defined for left
.Type and right
.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 chosen implementing method for the operation:
如果不
method
是,null
而它代表非 void (,則static
Shared
在採用兩個引數的 Visual Basic) 方法中,它就是實作為方法。Ifmethod
is notnull
and it represents a non-void,static
(Shared
in Visual Basic) method that takes two arguments, it is the implementing method.否則,如果 Type 或的屬性代表多載運算子的
left
right
使用者定義型別XOR
, MethodInfo 表示該方法的會是實方法。Otherwise, if the Type property of eitherleft
orright
represents a user-defined type that overloads theXOR
operator, the MethodInfo that represents that method is the implementing method.否則為
left
。輸入和right
。類型是整數或布林值類型,實方法是null
。Otherwise, ifleft
.Type andright
.Type are integral or Boolean types, the implementing method isnull
.
節點類型和提升與未提升Node Type and Lifted versus Non-Lifted
如果執行中的方法不是 null
:If the implementing method is not null
:
如果為,則為
left
。輸入和right
。類型可指派給實方法的對應引數類型,而不會引發節點。Ifleft
.Type andright
.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.如果符合下列兩個條件,節點就會被提升,而節點的類型會是可為 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
。類型是數值型別,其中至少有一個可為 null,而對應的不可為 null 的類型等於實方法的對應引數類型。left
.Type andright
.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
。類型不可為 null,節點不會被提升。Ifleft
.Type andright
.Type are both non-nullable, the node is not lifted. 節點的型別是預先定義之運算子的結果型別XOR
。The type of the node is the result type of the predefinedXOR
operator.如果為,則為
left
。輸入和right
。型別可以是可為 null,而是會提升節點。Ifleft
.Type andright
.Type are both nullable, the node is lifted. 節點的型別是可為 null 的型別,它會對應到預先定義之運算子的結果型別XOR
。The type of the node is the nullable type that corresponds to the result type of the predefinedXOR
operator.
適用於
ExclusiveOr(Expression, Expression)
使用 op_ExclusiveOr
作為使用者定義型別,建立表示位元 XOR
運算的 BinaryExpression。Creates a BinaryExpression that represents a bitwise XOR
operation, using op_ExclusiveOr
for user-defined types.
public:
static System::Linq::Expressions::BinaryExpression ^ ExclusiveOr(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right);
public static System.Linq.Expressions.BinaryExpression ExclusiveOr (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right);
static member ExclusiveOr : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BinaryExpression
Public Shared Function ExclusiveOr (left As Expression, right As Expression) As BinaryExpression
參數
- left
- Expression
要將 Expression 屬性設定為與之相等的 Left。An Expression to set the Left property equal to.
- right
- Expression
要將 Expression 屬性設定為與之相等的 Right。An Expression to set the Right property equal to.
傳回
BinaryExpression,其 NodeType 屬性等於 ExclusiveOr,且 Left 和 Right 屬性設定為指定的值。A BinaryExpression that has the NodeType property equal to ExclusiveOr and the Left and Right properties set to the specified values.
例外狀況
left
或 right
為 null
。left
or right
is null
.
不會為 left
.Type 和 right
.Type 定義 XOR
運算子。The XOR
operator is not defined for left
.Type and right
.Type.
範例
下列程式碼範例示範如何建立代表邏輯 XOR 運算的運算式。The following code example shows how to create an expression that represents the logical XOR operation.
// Add the following directive to your file:
// using System.Linq.Expressions;
// This expression represents an exclusive OR operation for its two arguments.
// Both arguments must be of the same type,
// which can be either integer or boolean.
Expression exclusiveOrExpr = Expression.ExclusiveOr(
Expression.Constant(5),
Expression.Constant(3)
);
// Print out the expression.
Console.WriteLine(exclusiveOrExpr.ToString());
// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(
Expression.Lambda<Func<int>>(exclusiveOrExpr).Compile()());
// The XOR operation is performed as follows:
// 101 xor 011 = 110
// This code example produces the following output:
//
// (5 ^ 3)
// 6
' Add the following directive to your file:
' Imports System.Linq.Expressions
' This expression represents an exclusive OR operation for its two arguments.
' Both arguments must be of the same type,
' which can be either integer or Boolean.
Dim exclusiveOrExpr As Expression = Expression.ExclusiveOr(
Expression.Constant(5),
Expression.Constant(3)
)
' Print the expression.
Console.WriteLine(exclusiveOrExpr.ToString())
' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(
Expression.Lambda(Of Func(Of Integer))(exclusiveOrExpr).Compile()())
' The XOR operation is performed as follows:
' 101 xor 011 = 110
' This code example produces the following output:
'
' (5 ^ 3)
' 6
備註
產生的 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 或的屬性代表多載運算子的
left
right
使用者定義型別XOR
, MethodInfo 表示該方法的會是實方法。If the Type property of eitherleft
orright
represents a user-defined type that overloads theXOR
operator, the MethodInfo that represents that method is the implementing method.否則為
left
。輸入和right
。類型是整數或布林值類型,實方法是null
。Otherwise, ifleft
.Type andright
.Type are integral or Boolean types, the implementing method isnull
.
節點類型和提升與未提升Node Type and Lifted versus Non-Lifted
如果執行中的方法不是 null
:If the implementing method is not null
:
如果為,則為
left
。輸入和right
。類型可指派給實方法的對應引數類型,而不會引發節點。Ifleft
.Type andright
.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.如果符合下列兩個條件,節點就會被提升,而節點的類型會是可為 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
。類型是數值型別,其中至少有一個可為 null,而對應的不可為 null 的類型等於實方法的對應引數類型。left
.Type andright
.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
。類型不可為 null,節點不會被提升。Ifleft
.Type andright
.Type are both non-nullable, the node is not lifted. 節點的型別是預先定義之運算子的結果型別XOR
。The type of the node is the result type of the predefinedXOR
operator.如果為,則為
left
。輸入和right
。型別可以是可為 null,而是會提升節點。Ifleft
.Type andright
.Type are both nullable, the node is lifted. 節點的型別是可為 null 的型別,它會對應到預先定義之運算子的結果型別XOR
。The type of the node is the nullable type that corresponds to the result type of the predefinedXOR
operator.