Expression.Negate 方法

定义

创建一个表示算术求反运算的 UnaryExpression

重载

Negate(Expression, MethodInfo)

创建一个表示算术求反运算的 UnaryExpression

Negate(Expression)

创建一个表示算术求反运算的 UnaryExpression

Negate(Expression, MethodInfo)

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

创建一个表示算术求反运算的 UnaryExpression

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

参数

expression
Expression

要将 Expression 属性设置为与其相等的 Operand

method
MethodInfo

要将 MethodInfo 属性设置为与其相等的 Method

返回

一个 UnaryExpression,其 NodeType 属性等于 Negate,并且其 OperandMethod 属性设置为指定值。

例外

expressionnull

method 不为 null 且其表示的方法返回 void;不为 static(在 Visual Basic 中不为 Shared);或者不是正好带一个参数。

methodnull,并且没有为 expression.Type 定义一元负运算符。

- 或 -

expression.Type(如果它是可以为 null 的值类型,则取其相应的不可以为 null 的类型)不能赋给 method 所表示的方法的参数类型。

注解

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

实现方法

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

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

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

  • 否则为 (如果 expression为 )。类型是数字类型,实现方法是 null

节点类型和提升与非提升

如果实现方法不是 null

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

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

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

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

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

适用于

Negate(Expression)

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

创建一个表示算术求反运算的 UnaryExpression

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

参数

expression
Expression

要将 Expression 属性设置为与其相等的 Operand

返回

一个 UnaryExpression,其 NodeType 属性等于 Negate,并且其 Operand 属性设置为指定值。

例外

expressionnull

没有为 expression.Type 定义一元负运算符。

示例

下面的示例演示如何创建表示算术求反运算的表达式。

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

// This expression represents a negation operation.
Expression negateExpr = Expression.Negate(Expression.Constant(5));

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

// This code example produces the following output:
//
// -5
' Add the following directive to your file:
' Imports System.Linq.Expressions 

' This expression represents a negation operation.
Dim negateExpr As Expression = Expression.Negate(Expression.Constant(5))

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

' This code example produces the following output:
'
' -5

注解

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

实现方法

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

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

  • 否则为 (如果 expression为 )。类型是数字类型,实现方法是 null

节点类型和提升与非提升

如果实现方法不是 null

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

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

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

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

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

适用于