Expression.Not 方法

定義

建立表示位元補數運算的 UnaryExpression

多載

Not(Expression)

建立表示位元補數運算的 UnaryExpression

Not(Expression, MethodInfo)

建立表示位元補數運算的 UnaryExpression。 實作的方法可加以指定。

Not(Expression)

來源:
UnaryExpression.cs
來源:
UnaryExpression.cs
來源:
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

要將 Expression 屬性設定為與之相等的 Operand

傳回

UnaryExpression,其 NodeType 屬性等於 Not,而 Operand 屬性設定為指定的值。

例外狀況

expressionnull

不會為 expression.Type 定義一元 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 。類型是定義一元 not 運算子的使用者定義型別, MethodInfo 代表該運算子的 是實作方法。

  • 否則,如果 expression 為 。類型是數值或布林類型,實作方法為 null

節點類型和隨即轉移與非隨即轉移的比較

如果實作方法不是 null

  • 如果為 expression 。類型可指派給實作方法的引數類型,節點不會隨即解除。 節點的類型是實作方法的傳回型別。

  • 如果滿足下列兩個條件,則會隨即解除節點,而節點的類型是對應至實作方法之傳回型別的可為 Null 型別:

    • expression.類型是可為 Null 的實值型別,而對應的不可為 Null 型別等於實作方法的引數類型。

    • 實作方法的傳回型別是不可為 Null 的實值型別。

如果實作方法為 null ,則節點的類型為 expression 。類型。 如果為 expression 。類型不可為 Null,節點不會隨即解除。 否則,節點會隨即隨即轉移。

適用於

Not(Expression, MethodInfo)

來源:
UnaryExpression.cs
來源:
UnaryExpression.cs
來源:
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

要將 Expression 屬性設定為與之相等的 Operand

method
MethodInfo

要將 MethodInfo 屬性設定為與之相等的 Method

傳回

UnaryExpression,其 NodeType 屬性等於 Not,且 OperandMethod 屬性設定為指定的值。

例外狀況

expressionnull

method 不是 null,而且其代表的方法傳回的是 void,不是 static (在 Visual Basic 中為 Shared),或者使用的引數不是剛好一個。

methodnull,且不會為 expression.Type 定義一元 NOT 運算子。

-或-

expression.Type (如果它是可為 Null 的實質類型,則為其對應之不可為 Null 的類型) 無法指派給 method 所代表之方法的引數類型。

備註

Method產生的 UnaryExpression 屬性會設定為實作方法。 屬性 Type 會設定為節點的類型。 如果隨即解除節點, IsLiftedIsLiftedToNull 屬性都是 true 。 否則,它們是 false

實作方法

下列規則會決定作業的實作方法:

  • 如果 method 不是 null 且它代表非 void, static (Shared Visual Basic) 方法中採用一個引數,則為節點的實作方法。

  • 如果為 expression 。類型是定義一元 not 運算子的使用者定義型別, MethodInfo 代表該運算子的 是實作方法。

  • 否則,如果 expression 為 。類型是數數值型別,實作方法是 null

節點類型和隨即轉移與非隨即轉移的比較

如果實作方法不是 null

  • 如果為 expression 。類型可指派給實作方法的引數類型,節點不會隨即解除。 節點的類型是實作方法的傳回型別。

  • 如果滿足下列兩個條件,則會隨即解除節點,而節點的類型是對應至實作方法之傳回型別的可為 Null 型別:

    • expression.類型是可為 Null 的實值型別,且對應的不可為 Null 實作實作方法的引數類型相等。

    • 實作方法的傳回型別是不可為 Null 的實值型別。

如果實作方法為 null ,則節點的類型為 expression 。類型。 如果為 expression 。類型不可為 Null,節點不會隨即解除。 否則,節點會隨即隨即轉移。

適用於