Поделиться через


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, для которого задано указанное значение.

Исключения

expression имеет значение null.

Унарный оператор Not не определен для типа expression.Type.

Примеры

В следующем примере показано, как создать выражение, представляющее логическую операцию 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 присваивается тип узла. Если узел приподнят, IsLifted свойства и IsLiftedToNull имеют значение 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, и свойствами Operand и Method, для которых заданы указанные значения.

Исключения

expression имеет значение null.

Значение параметра method не равно null, и метод, который представляется этим параметром, возвращает значение void, не является static (Shared в Visual Basic) и не принимает ровно один аргумент.

method равно null, а унарный оператор Not не определен для типа expression.Type.

-или-

Тип expression.Type (или соответствующий тип, не поддерживающий значение null, если он является типом, поддерживающим значение null) не назначается типу аргумента метода, представленного method.

Комментарии

Свойству Method результирующего UnaryExpression объекта присваивается реализующий метод. Свойству Type присваивается тип узла. Если узел приподнят, IsLifted свойства и IsLiftedToNull имеют значение true. В противном случае они имеют значение false.

Метод реализации

Следующие правила определяют метод реализации операции:

  • Если method параметр не null имеет и представляет метод non-void ( staticShared в Visual Basic), который принимает один аргумент, он является реализующим методом для узла.

  • Если expression. Тип — это определяемый пользователем тип, определяющий унарный оператор not. MethodInfo Объект , представляющий этот оператор, является реализующим методом.

  • В противном случае , если expression. Тип — это числовой тип, реализующий метод — null.

Тип узла, а также тип невозвыводимый и невозвыводимый

Если реализующим методом не nullявляется :

  • Если expression. Тип можно назначить типу аргумента реализующего метода, при этом узел не поднимается. Тип узла является типом возвращаемого значения реализующего метода.

  • Если выполняются следующие два условия, узел поднимается, а тип узла является типом, допускающим значение NULL, который соответствует типу возвращаемого значения реализующего метода:

    • expression. Тип является типом значения, допускающим значение NULL, и соответствующий тип значения, не допускающий значения NULL, равен типу аргумента реализующего метода.

    • Тип возвращаемого значения реализующего метода является типом значения, не допускающим значение NULL.

Если реализующим методом является null, тип узла — expression. Тип. Если expression. Тип не допускает значения NULL, узел не поднимается. В противном случае узел приподнимается.

Применяется к