通过


Expression.Not 方法

定义

创建表示按位补补运算的一个 UnaryExpression

重载

名称 说明
Not(Expression)

创建表示按位补补运算的一个 UnaryExpression

Not(Expression, MethodInfo)

创建表示按位补补运算的一个 UnaryExpression 。 可以指定实现方法。

Not(Expression)

Source:
UnaryExpression.cs
Source:
UnaryExpression.cs
Source:
UnaryExpression.cs
Source:
UnaryExpression.cs
Source:
UnaryExpression.cs

创建表示按位补补运算的一个 UnaryExpression

public:
 static System::Linq::Expressions::UnaryExpression ^ Not(System::Linq::Expressions::Expression ^ expression);
public static System.Linq.Expressions.UnaryExpression Not(System.Linq.Expressions.Expression expression);
static member Not : System.Linq.Expressions.Expression -> System.Linq.Expressions.UnaryExpression
Public Shared Function Not (expression As Expression) As UnaryExpression

参数

expression
Expression

要设置的属性Operand等于的一个Expression

返回

一个 UnaryExpression 属性 NodeType 等于 NotOperand 属性设置为指定值。

例外

expressionnull

未为 expression一元 not 运算符定义 。类型。

示例

以下示例演示如何创建表示逻辑 NOT 操作的表达式。

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

// This expression represents a NOT operation.
Expression notExpr = Expression.Not(Expression.Constant(true));

Console.WriteLine(notExpr);

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

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

' This expression represents a NOT operation.
Dim notExpr As Expression = Expression.Not(Expression.Constant(True))

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

' This code example produces the following output:
'
' Not(True)
' False

注解

Method生成的UnaryExpression属性设置为实现方法。 该 Type 属性设置为节点的类型。 如果节点被提升,则 IsLiftedIsLiftedToNull 属性均为 true。 否则,它们为 false

实现方法

以下规则确定操作的实现方法:

  • 如果 expression。类型是定义一元非运算符的用户定义类型, MethodInfo 表示该运算符是实现方法。

  • 否则,如果 expression为 .类型是数值类型或布尔类型,实现方法是 null

节点类型和提升与非提升

如果实现方法不是 null

  • 如果 expression。类型可分配给实现方法的参数类型,不会提升节点。 节点的类型是实现方法的返回类型。

  • 如果满足以下两个条件,则节点被提升,并且节点的类型是与实现方法的返回类型相对应的可为 null 类型:

    • expression.类型为可为 null 的值类型,相应的不可为 null 类型等于实现方法的参数类型。

    • 实现方法的返回类型是不可为 null 的值类型。

如果实现方法是 null,则节点的类型为 expression。类型。 如果 expression。类型不可为 null,不会提升节点。 否则,将提升节点。

适用于

Not(Expression, MethodInfo)

Source:
UnaryExpression.cs
Source:
UnaryExpression.cs
Source:
UnaryExpression.cs
Source:
UnaryExpression.cs
Source:
UnaryExpression.cs

创建表示按位补补运算的一个 UnaryExpression 。 可以指定实现方法。

public:
 static System::Linq::Expressions::UnaryExpression ^ Not(System::Linq::Expressions::Expression ^ expression, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.UnaryExpression Not(System.Linq.Expressions.Expression expression, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.UnaryExpression Not(System.Linq.Expressions.Expression expression, System.Reflection.MethodInfo? method);
static member Not : System.Linq.Expressions.Expression * System.Reflection.MethodInfo -> System.Linq.Expressions.UnaryExpression
Public Shared Function Not (expression As Expression, method As MethodInfo) As UnaryExpression

参数

expression
Expression

要设置的属性Operand等于的一个Expression

method
MethodInfo

一个 MethodInfo 设置为 Method 等于的属性。

返回

一个UnaryExpression属性NodeType等于NotOperandMethod属性设置为指定值。

例外

expressionnull

method is not null and the method it represents returns void, is not staticShared in Visual Basic), or not takely one argument.

methodnull 且未为 expression一元 not 运算符定义 。类型。

-或-

expression.类型(或其相应的不可为 null 的类型(如果它是可为 null 的值类型)不可分配给方法 method所表示的参数类型。

注解

Method生成的UnaryExpression属性设置为实现方法。 该 Type 属性设置为节点的类型。 如果节点被提升,则 IsLiftedIsLiftedToNull 属性均为 true。 否则,它们为 false

实现方法

以下规则确定操作的实现方法:

  • 如果method不是null并且它表示非 void(staticShared在 Visual Basic)方法中采用一个参数,则它是节点的实现方法。

  • 如果 expression。类型是定义一元非运算符的用户定义类型, MethodInfo 表示该运算符是实现方法。

  • 否则,如果 expression为 .类型是数值类型,实现方法是 null

节点类型和提升与非提升

如果实现方法不是 null

  • 如果 expression。类型可分配给实现方法的参数类型,不会提升节点。 节点的类型是实现方法的返回类型。

  • 如果满足以下两个条件,则节点被提升,并且节点的类型是与实现方法的返回类型相对应的可为 null 类型:

    • expression.类型为可为 null 的值类型,相应的不可为 null 值类型等于实现方法的参数类型。

    • 实现方法的返回类型是不可为 null 的值类型。

如果实现方法是 null,则节点的类型为 expression。类型。 如果 expression。类型不可为 null,不会提升节点。 否则,将提升节点。

适用于