Expression.ExclusiveOr Methode

Definitie

Hiermee maakt u een BinaryExpression bewerking die een bitsgewijze XOR bewerking vertegenwoordigt.

Overloads

Name Description
ExclusiveOr(Expression, Expression, MethodInfo)

Hiermee maakt u een BinaryExpression bewerking die een bitsgewijze XOR bewerking vertegenwoordigt, met behulp van op_ExclusiveOr door de gebruiker gedefinieerde typen. De implementatiemethode kan worden opgegeven.

ExclusiveOr(Expression, Expression)

Hiermee maakt u een BinaryExpression bewerking die een bitsgewijze XOR bewerking vertegenwoordigt, met behulp van op_ExclusiveOr door de gebruiker gedefinieerde typen.

ExclusiveOr(Expression, Expression, MethodInfo)

Hiermee maakt u een BinaryExpression bewerking die een bitsgewijze XOR bewerking vertegenwoordigt, met behulp van op_ExclusiveOr door de gebruiker gedefinieerde typen. De implementatiemethode kan worden opgegeven.

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

Parameters

left
Expression

Een Expression om de Left eigenschap in te stellen die gelijk is aan.

right
Expression

Een Expression om de Right eigenschap in te stellen die gelijk is aan.

method
MethodInfo

A MethodInfo om de Method eigenschap in te stellen die gelijk is aan.

Retouren

Een BinaryExpression met de NodeType eigenschap gelijk aan ExclusiveOr en de Left, Righten Method eigenschappen die zijn ingesteld op de opgegeven waarden.

Uitzonderingen

left of right is null.

method is niet null en de methode die deze vertegenwoordigt, retourneert void, is niet static (Shared in Visual Basic) of neemt niet precies twee argumenten.

method is null en de XOR operator is niet gedefinieerd voor left. Typ en right. Type.

Opmerkingen

De resulterende BinaryExpression eigenschap is Method ingesteld op de implementatiemethode. De Type eigenschap is ingesteld op het type knooppunt. Als het knooppunt wordt opgeheven, zijn de IsLifted en IsLiftedToNull eigenschappen beide true. Anders zijn ze false. De eigenschap Conversion is null.

De volgende informatie beschrijft de implementatiemethode, het knooppunttype en of een knooppunt wordt opgeheven.

Implementatiemethode

De volgende regels bepalen de gekozen implementatiemethode voor de bewerking:

  • Als method niet is null en deze een niet-ongeldige static (Shared in Visual Basic) vertegenwoordigt, is dit de implementatiemethode.

  • Als de eigenschap van een van beide of right een door de Type gebruiker gedefinieerd type vertegenwoordigt dat de XOR operator overbelast, is de MethodInfo methode die de implementatiemethode vertegenwoordigt.left

  • Anders, als left. Typ en right. Het type is integraal of Booleaanse typen, de implementatiemethode is null.

Type knooppunt en opgeheven versus niet-opgeheven

Als de implementatiemethode niet null is:

  • Als left.Type en right.Type kunnen worden toegewezen aan de bijbehorende argumenttypen van de implementatiemethode, dan wordt het knooppunt niet opgeheven. Het type van het knooppunt is het retourtype van de implementatiemethode.

  • Als aan de volgende twee voorwaarden wordt voldaan, wordt het knooppunt opgeheven en is het type van het knooppunt het type null dat overeenkomt met het retourtype van de implementatiemethode:

    • left.Type en right.Type zijn beide waardetypen waarvan er ten minste één nullable is, en de bijbehorende niet-nullable typen zijn gelijk aan de overeenkomstige argumenttypen van de implementatiemethode.

    • Het retourtype van de implementatiemethode is een niet-null-waardetype.

Als de implementatiemethode het volgende is null:

  • Als zowel left.Type als right.Type niet-nulbaar zijn, wordt het knooppunt niet opgeheven. Het type van het knooppunt is het resultaattype van de vooraf gedefinieerde XOR operator.

  • Als zowel left.Type als right.Type beide null-waarden kunnen hebben, wordt het knooppunt verheven. Het type van het knooppunt is het type null dat overeenkomt met het resultaattype van de vooraf gedefinieerde XOR operator.

Van toepassing op

ExclusiveOr(Expression, Expression)

Hiermee maakt u een BinaryExpression bewerking die een bitsgewijze XOR bewerking vertegenwoordigt, met behulp van op_ExclusiveOr door de gebruiker gedefinieerde typen.

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

Parameters

left
Expression

Een Expression om de Left eigenschap in te stellen die gelijk is aan.

right
Expression

Een Expression om de Right eigenschap in te stellen die gelijk is aan.

Retouren

Een BinaryExpression met de NodeType eigenschap gelijk aan ExclusiveOr en de Left eigenschappen die Right zijn ingesteld op de opgegeven waarden.

Uitzonderingen

left of right is null.

De XOR operator is niet gedefinieerd voor left. Typ en right. Type.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een expressie maakt die de logische XOR-bewerking vertegenwoordigt.

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

Opmerkingen

De resulterende BinaryExpression eigenschap is Method ingesteld op de implementatiemethode. De Type eigenschap is ingesteld op het type knooppunt. Als het knooppunt wordt opgeheven, zijn de IsLifted en IsLiftedToNull eigenschappen beide true. Anders zijn ze false. De eigenschap Conversion is null.

De volgende informatie beschrijft de implementatiemethode, het knooppunttype en of een knooppunt wordt opgeheven.

Implementatiemethode

De volgende regels bepalen de implementatiemethode voor de bewerking:

  • Als de Type eigenschap van een left van beide of right een door de gebruiker gedefinieerd type vertegenwoordigt dat de XOR operator overbelast, is de MethodInfo methode die de implementatiemethode vertegenwoordigt.

  • Anders, als left. Typ en right. Het type is integraal of Booleaanse typen, de implementatiemethode is null.

Type knooppunt en opgeheven versus niet-opgeheven

Als de implementatiemethode niet null is:

  • Als left.Type en right.Type kunnen worden toegewezen aan de bijbehorende argumenttypen van de implementatiemethode, dan wordt het knooppunt niet opgeheven. Het type van het knooppunt is het retourtype van de implementatiemethode.

  • Als aan de volgende twee voorwaarden wordt voldaan, wordt het knooppunt opgeheven en is het type van het knooppunt het type null dat overeenkomt met het retourtype van de implementatiemethode:

    • left.Type en right.Type zijn beide waardetypen waarvan er ten minste één nullable is, en de bijbehorende niet-nullable typen zijn gelijk aan de overeenkomstige argumenttypen van de implementatiemethode.

    • Het retourtype van de implementatiemethode is een niet-null-waardetype.

Als de implementatiemethode het volgende is null:

  • Als zowel left.Type als right.Type niet-nulbaar zijn, wordt het knooppunt niet opgeheven. Het type van het knooppunt is het resultaattype van de vooraf gedefinieerde XOR operator.

  • Als zowel left.Type als right.Type beide null-waarden kunnen hebben, wordt het knooppunt verheven. Het type van het knooppunt is het type null dat overeenkomt met het resultaattype van de vooraf gedefinieerde XOR operator.

Van toepassing op