Freigeben über


Expression.ExclusiveOr Methode

Definition

Erstellt eine BinaryExpression, die einen bitweisen XOR-Vorgang darstellt.

Überlädt

ExclusiveOr(Expression, Expression, MethodInfo)

Erstellt ein BinaryExpression, das eine bitweise XOR-Operation mit op_ExclusiveOr für benutzerdefinierte Typen darstellt. Die implementierende Methode kann angegeben werden.

ExclusiveOr(Expression, Expression)

Erstellt ein BinaryExpression, das eine bitweise XOR-Operation mit op_ExclusiveOr für benutzerdefinierte Typen darstellt.

ExclusiveOr(Expression, Expression, MethodInfo)

Quelle:
BinaryExpression.cs
Quelle:
BinaryExpression.cs
Quelle:
BinaryExpression.cs

Erstellt ein BinaryExpression, das eine bitweise XOR-Operation mit op_ExclusiveOr für benutzerdefinierte Typen darstellt. Die implementierende Methode kann angegeben werden.

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

Parameter

left
Expression

Ein Expression, auf den die Left-Eigenschaft festgelegt werden soll.

right
Expression

Ein Expression, auf den die Right-Eigenschaft festgelegt werden soll.

method
MethodInfo

Ein MethodInfo, auf das die Method-Eigenschaft festgelegt werden soll.

Gibt zurück

Ein BinaryExpression, bei dem die NodeType-Eigenschaft gleich ExclusiveOr ist und die Eigenschaften Left, Right und Method auf die angegebenen Werte festgelegt sind.

Ausnahmen

left oder right ist null.

method ist nicht null, und die dargestellte Methode gibt void zurück, ist nicht static (Shared in Visual Basic) oder akzeptiert nicht genau zwei Argumente.

method ist null, und der XOR-Operator ist für left.Type und right.Type nicht definiert.

Hinweise

Das resultierende BinaryExpression hat die Method -Eigenschaft auf die implementierende Methode festgelegt. Die Type -Eigenschaft ist auf den Typ des Knotens festgelegt. Wenn der Knoten angehoben wird, sind die IsLifted Eigenschaften und IsLiftedToNull beide true. Andernfalls sind falsesie . Die Conversion-Eigenschaft ist null.

Die folgenden Informationen beschreiben die implementierenden Methode, den Knotentyp und ob ein Knoten aufgehoben wird.

Implementieren der Methode

Die folgenden Regeln bestimmen die ausgewählte Implementierungsmethode für den Vorgang:

  • Wenn method dies nicht null der Wert ist und eine nicht leere (Sharedin Visual Basic)-Methode darstellt, static die zwei Argumente akzeptiert, handelt es sich um die implementierende Methode.

  • Wenn andernfalls die Type Eigenschaft von oder rightleft einen benutzerdefinierten Typ darstellt, der den XOR Operator überlädt, ist die MethodInfo diese Methode die implementierende Methode.

  • Andernfalls, wenn left. Geben Sie und ein right. Typ sind integrale oder boolesche Typen, die implementierende Methode ist null.

Knotentyp und "Lifted" im Vergleich zu "Non-Lifted"

Wenn die implementierenden Methode nicht nulllautet:

  • Wenn left. Geben Sie und ein right. Typ können den entsprechenden Argumenttypen der implementierenden Methode zugewiesen werden, der Knoten wird nicht aufgehoben. Der Typ des Knotens ist der Rückgabetyp der implementierenden Methode.

  • Wenn die folgenden beiden Bedingungen erfüllt sind, wird der Knoten aufgehoben, und der Typ des Knotens ist der Nullable-Typ, der dem Rückgabetyp der implementierenden Methode entspricht:

    • left. Geben Sie und ein right. Typ sind beide Werttypen, von denen mindestens einer nullable ist, und die entsprechenden Nicht-Nullable-Typen sind gleich den entsprechenden Argumenttypen der implementierenden Methode.

    • Der Rückgabetyp der implementierenden Methode ist ein Werttyp, der nicht nullable ist.

Wenn die implementierenden Methode lautet null:

  • Wenn left. Geben Sie und ein right. Typ sind beide nicht nullable, der Knoten wird nicht angehoben. Der Typ des Knotens ist der Ergebnistyp des vordefinierten XOR Operators.

  • Wenn left. Geben Sie und ein right. Typ sind beide nullable, der Knoten wird aufgehoben. Der Typ des Knotens ist der Nullable-Typ, der dem Ergebnistyp des vordefinierten XOR Operators entspricht.

Gilt für:

ExclusiveOr(Expression, Expression)

Quelle:
BinaryExpression.cs
Quelle:
BinaryExpression.cs
Quelle:
BinaryExpression.cs

Erstellt ein BinaryExpression, das eine bitweise XOR-Operation mit op_ExclusiveOr für benutzerdefinierte Typen darstellt.

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

Parameter

left
Expression

Ein Expression, auf den die Left-Eigenschaft festgelegt werden soll.

right
Expression

Ein Expression, auf den die Right-Eigenschaft festgelegt werden soll.

Gibt zurück

Ein BinaryExpression, bei dem die NodeType-Eigenschaft gleich ExclusiveOr ist und die Left-Eigenschaft sowie die Right-Eigenschaft auf die angegebenen Werte festgelegt sind.

Ausnahmen

left oder right ist null.

Der XOR-Operator ist für left.Type und right.Type nicht definiert.

Beispiele

Das folgende Codebeispiel zeigt, wie Sie einen Ausdruck erstellen, der den logischen XOR-Vorgang darstellt.

// 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

Hinweise

Das resultierende BinaryExpression hat die Method -Eigenschaft auf die implementierende Methode festgelegt. Die Type -Eigenschaft ist auf den Typ des Knotens festgelegt. Wenn der Knoten angehoben wird, sind die IsLifted Eigenschaften und IsLiftedToNull beide true. Andernfalls sind falsesie . Die Conversion-Eigenschaft ist null.

Die folgenden Informationen beschreiben die implementierenden Methode, den Knotentyp und ob ein Knoten aufgehoben wird.

Implementieren der Methode

Die folgenden Regeln bestimmen die Implementierungsmethode für den Vorgang:

  • Wenn die Type -Eigenschaft von oder rightleft einen benutzerdefinierten Typ darstellt, der den XOR Operator überlädt, ist die methode, die MethodInfo diese Methode darstellt, die implementierende Methode.

  • Andernfalls, wenn left. Geben Sie und ein right. Typ sind integrale oder boolesche Typen, die implementierende Methode ist null.

Knotentyp und "Lifted" im Vergleich zu "Non-Lifted"

Wenn die implementierenden Methode nicht nulllautet:

  • Wenn left. Geben Sie und ein right. Typ können den entsprechenden Argumenttypen der implementierenden Methode zugewiesen werden, der Knoten wird nicht aufgehoben. Der Typ des Knotens ist der Rückgabetyp der implementierenden Methode.

  • Wenn die folgenden beiden Bedingungen erfüllt sind, wird der Knoten aufgehoben, und der Typ des Knotens ist der Nullable-Typ, der dem Rückgabetyp der implementierenden Methode entspricht:

    • left. Geben Sie und ein right. Typ sind beide Werttypen, von denen mindestens einer nullable ist, und die entsprechenden Nicht-Nullable-Typen sind gleich den entsprechenden Argumenttypen der implementierenden Methode.

    • Der Rückgabetyp der implementierenden Methode ist ein Werttyp, der nicht nullable ist.

Wenn die implementierenden Methode lautet null:

  • Wenn left. Geben Sie und ein right. Typ sind beide nicht nullable, der Knoten wird nicht angehoben. Der Typ des Knotens ist der Ergebnistyp des vordefinierten XOR Operators.

  • Wenn left. Geben Sie und ein right. Typ sind beide nullable, der Knoten wird aufgehoben. Der Typ des Knotens ist der Nullable-Typ, der dem Ergebnistyp des vordefinierten XOR Operators entspricht.

Gilt für: