Expression.Equal Metod

Definition

Skapar en BinaryExpression som representerar en likhetsjämförelse.

Överlagringar

Name Description
Equal(Expression, Expression)

Skapar en BinaryExpression som representerar en likhetsjämförelse.

Equal(Expression, Expression, Boolean, MethodInfo)

Skapar en BinaryExpression som representerar en likhetsjämförelse. Implementeringsmetoden kan anges.

Equal(Expression, Expression)

Skapar en BinaryExpression som representerar en likhetsjämförelse.

public:
 static System::Linq::Expressions::BinaryExpression ^ Equal(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right);
public static System.Linq.Expressions.BinaryExpression Equal(System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right);
static member Equal : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BinaryExpression
Public Shared Function Equal (left As Expression, right As Expression) As BinaryExpression

Parametrar

left
Expression

En Expression som egenskapen Left ska vara lika med.

right
Expression

En Expression som egenskapen Right ska vara lika med.

Returer

En BinaryExpression som har egenskapen NodeType lika med Equal och Left egenskaperna och Right inställda på de angivna värdena.

Undantag

left eller right är null.

Likhetsoperatorn har inte definierats för left. Skriv och right. Typ.

Exempel

I följande kodexempel visas hur du skapar ett uttryck som kontrollerar om värdena för dess två argument är lika med.

// Add the following directive to your file:
// using System.Linq.Expressions;

// This expression compares the values of its two arguments.
// Both arguments need to be of the same type.
Expression equalExpr = Expression.Equal(
    Expression.Constant(42),
    Expression.Constant(45)
);

// Print out the expression.
Console.WriteLine(equalExpr.ToString());

// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(
    Expression.Lambda<Func<bool>>(equalExpr).Compile()());

// This code example produces the following output:
//
// (42 == 45)
// False
' Add the following directive to your file:
' Imports System.Linq.Expressions  

' This expression compares the values of its two arguments.
' Both arguments must be of the same type.
Dim equalExpr As Expression = Expression.Equal(
    Expression.Constant(42),
    Expression.Constant(45)
)

' Print the expression.
Console.WriteLine(equalExpr.ToString())

' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(
    Expression.Lambda(Of Func(Of Boolean))(equalExpr).Compile()())

' This code example produces the following output:
'
' (42 == 45)
' False

Kommentarer

Den resulterande BinaryExpression egenskapen har Method angetts till implementeringsmetoden. Egenskapen Type är inställd på nodens typ. Om noden lyfts är trueegenskapen IsLifted . Annars är falsedet . Egenskapen IsLiftedToNull är alltid false. Följande information beskriver implementeringsmetoden, nodtypen och om en nod lyfts.

Implementeringsmetod

Följande regler avgör implementeringsmetoden för åtgärden:

  • Type Om egenskapen för antingen left eller right representerar en användardefinierad typ som överbelastar likhetsoperatorn är den som representerar den MethodInfo metoden implementeringsmetoden.

  • Annars är nullimplementeringsmetoden .

Nodtyp och lyft jämfört med icke-lyft

Om implementeringsmetoden inte nullär :

  • Om left.Typ och right.Typ kan tilldelas till motsvarande argumenttyper i implementeringsmetoden, lyfts noden inte. Nodens typ är returtypen för implementeringsmetoden.

  • Om följande två villkor uppfylls lyfts noden och nodens typ är Boolean:

    • left.Typ och right.Typ är båda värdetyper av vilka minst en är nullbar och vars motsvarande icke-nullbara typer är lika med de motsvarande argumenttyperna för den implementerande metoden.

    • Returtypen för implementeringsmetoden är Boolean.

Om implementeringsmetoden är null:

  • Om left.Type och right.Type båda är icke-nullable, lyfts noden inte. Nodens typ är Boolean.

  • Om left.Typ och right.Typ båda är nullbara, lyfts noden. Nodens typ är Boolean.

Gäller för

Equal(Expression, Expression, Boolean, MethodInfo)

Skapar en BinaryExpression som representerar en likhetsjämförelse. Implementeringsmetoden kan anges.

public:
 static System::Linq::Expressions::BinaryExpression ^ Equal(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right, bool liftToNull, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.BinaryExpression Equal(System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, bool liftToNull, System.Reflection.MethodInfo method);
static member Equal : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * bool * System.Reflection.MethodInfo -> System.Linq.Expressions.BinaryExpression
Public Shared Function Equal (left As Expression, right As Expression, liftToNull As Boolean, method As MethodInfo) As BinaryExpression

Parametrar

left
Expression

En Expression som egenskapen Left ska vara lika med.

right
Expression

En Expression som egenskapen Right ska vara lika med.

liftToNull
Boolean

true för att ange IsLiftedToNull till true; false för att ange IsLiftedToNull till false.

method
MethodInfo

A MethodInfo för att ange egenskapen Method lika med.

Returer

En BinaryExpression som har NodeType egenskapen lika med Equal och Leftegenskaperna , Right, IsLiftedToNulloch Method inställd på de angivna värdena.

Undantag

left eller right är null.

method är inte null och metoden den representerar returnerar void, är inte static (Shared i Visual Basic) eller tar inte exakt två argument.

method är null och likhetsoperatorn har inte definierats för left. Skriv och right. Typ.

Kommentarer

Den resulterande BinaryExpression egenskapen har Method angetts till implementeringsmetoden. Egenskapen Type är inställd på nodens typ. Om noden lyfts IsLifted är true egenskapen och egenskapen IsLiftedToNull är lika med liftToNull. Annars är de båda false. Följande information beskriver implementeringsmetoden, nodtypen och om en nod lyfts.

Implementeringsmetod

Följande regler avgör implementeringsmetoden för åtgärden:

  • Om method inte är null och den representerar en icke-void, static (Shared i Visual Basic) som tar två argument, är det implementeringsmetoden.

  • Annars, om Type egenskapen för antingen left eller right representerar en användardefinierad typ som överbelastar likhetsoperatorn, MethodInfo är den som representerar den metoden implementeringsmetoden.

  • Annars är nullimplementeringsmetoden .

Nodtyp och lyft jämfört med icke-lyft

Om implementeringsmetoden inte nullär :

  • Om left.Typ och right.Typ kan tilldelas till motsvarande argumenttyper i implementeringsmetoden, lyfts noden inte. Nodens typ är returtypen för implementeringsmetoden.

  • Om följande två villkor uppfylls lyfts noden. Dessutom kan nodens typ vara null om BooleanliftToNull är true eller Boolean om liftToNull är false:

    • left.Typ och right.Typ är båda värdetyper av vilka minst en är nullbar och vars motsvarande icke-nullbara typer är lika med de motsvarande argumenttyperna för den implementerande metoden.

    • Returtypen för implementeringsmetoden är Boolean.

Om implementeringsmetoden är null:

  • Om left.Type och right.Type båda är icke-nullable, lyfts noden inte. Nodens typ är Boolean.

  • Om left.Typ och right.Typ båda är nullbara, lyfts noden. Nodens typ kan vara null Boolean om liftToNull är true eller Boolean om liftToNull är false.

Gäller för