Not 运算符 (Visual Basic)

Boolean 表达式执行逻辑非运算,或对数值表达式执行位求反运算。

语法

result = Not expression  

组成部分

result
必需。 任何 Boolean 或数值表达式。

expression
必需。 任何 Boolean 或数值表达式。

注解

对于 result 表达式,下表说明了如何确定 Boolean

如果 expression result 的值为
True False
False True

对于数值表达式,Not 运算符将任意数值表达式的位值取反,并根据下表设置 result 中的相应位。

如果 expression 中的位为 result 中的位为
1 0
0 1

注意

由于逻辑运算符和位运算符的优先级低于其他算术运算符和关系运算符,因此任何位运算都应括在括号中以确保准确执行运算。

请注意,如果 Not someStr?.Contains("some string") 或任何计算结果为 Boolean? 的其他值具有值 nothingHasValue=false,则运行 else 块。 计算遵循 SQL 计算,其中 null/nothing 不等于任何内容,甚至不等于其他 null/nothing。

数据类型

对于布尔求反,结果的数据类型为 Boolean。 对于位求反,结果的数据类型与 expression 的数据类型相同。 但是,如果表达式为 Decimal,则结果为 Long

重载

Not 运算符可以重载,这意味着当操作数具有某一类或结构的类型时,该类或结构可以重新定义其行为。 如果你的代码在这种类或结构上使用此运算符,请确保了解其重新定义的行为。 有关详细信息,请参阅 Operator Procedures

示例 1

下面的示例使用 Not 运算符对 Boolean 表达式执行逻辑求反。 结果是一个 Boolean 值,表示表达式值的相反值。

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck As Boolean
firstCheck = Not (a > b)
secondCheck = Not (b > a)

前面的示例分别生成结果 FalseTrue

示例 2

以下示例使用 Not 运算符对一个数值表达式的各个位执行逻辑求反。 结果模式中的位设置为操作数模式中相应位的相反位置,包括符号位。

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstPattern, secondPattern, thirdPattern As Integer
firstPattern = (Not a)
secondPattern = (Not b)
thirdPattern = (Not c)

前面的示例分别生成结果 –11、–9 和 –7。

请参阅