VB.Net - 逻辑/位运算符
2022-06-02 11:46 更新
下表显示了VB.Net支持的所有逻辑运算符。 假设变量A为布尔值True,变量B为布尔值False,则:
运算符 | 描述 | 实例 |
---|---|---|
And | 它是逻辑运算符,也是按位与运算符。如果两个操作数都为真,则条件为真。该运算符不执行短路操作,即同时计算两个表达式。(该运算符又被称为与运算符,只有两边都为真时返回结果才能为真) | (A And B) 返回 False. |
Or | 它既是逻辑运算符,也是按位或运算符。如果两个操作数中的任何一个为真,则条件为真。该运算符不执行短路操作,即同时计算两个表达式。(该运算符又被称为或运算符,只有两边都为假时返回的结果才能为假) | (A Or B) 返回 True. |
Not | 它既是逻辑运算符,也是按位非运算符。 用于反转其操作数的逻辑状态。 如果条件为真,则逻辑非运算符将为假。(该运算符又被称为非运算符,用于反转逻辑状态) | Not(A And B) 返回True. |
Xor | 它是逻辑和按位逻辑异或运算符。如果两个表达式都为真或都为假,则返回True;否则,它返回False。该运算符不执行短路,它总是计算两个表达式,并且没有该运算符的短路对应项 (异或运算的特点是:只有两个表达式结果不同才会返回真) | A Xor B 返回 True. |
AndAlso | 它是逻辑AND运算符。它只对布尔数据有效。它执行短路。 | (A AndAlso B) 返回 False. |
OrElse | 它是逻辑或运算符。 它只适用于布尔数据。 它执行短路。 | (A OrElse B) 返回 True. |
IsFalse | 它确定表达式是否为False。 | |
IsTrue | 它确定表达式是否为True。 |
短路运算:一种逻辑运算规则,我们知道与逻辑运算的算法是只要有一个假就能判定为假,或运算符只要有一个为真就能判定为真。短路运算的算法就是建立在这一基础上。
以与运算为例:当两个表达式前一个表达式判定为假时,第二个表达式不会进行计算,直接返回假
这样的计算被称为短路运算,它可以提高逻辑运算的速度(毕竟有一部分情况只需要计算第一个表达式即可)
但是短路运算也有其缺点,就是不够严谨,特别是部分情况下还是需要运算第二个表达式。所以很多语言都有提供短路版本和非短路版本的与运算和或运算。
尝试以下示例来了解VB.Net中提供的所有逻辑/按位运算符:
Module logicalOp
Sub Main()
Dim a As Boolean = True
Dim b As Boolean = True
Dim c As Integer = 5
Dim d As Integer = 20
'logical And, Or and Xor Checking
If (a And b) Then
Console.WriteLine("Line 1 - Condition is true")
End If
If (a Or b) Then
Console.WriteLine("Line 2 - Condition is true")
End If
If (a Xor b) Then
Console.WriteLine("Line 3 - Condition is true")
End If
'bitwise And, Or and Xor Checking
If (c And d) Then
Console.WriteLine("Line 4 - Condition is true")
End If
If (c Or d) Then
Console.WriteLine("Line 5 - Condition is true")
End If
If (c Or d) Then
Console.WriteLine("Line 6 - Condition is true")
End If
'Only logical operators
If (a AndAlso b) Then
Console.WriteLine("Line 7 - Condition is true")
End If
If (a OrElse b) Then
Console.WriteLine("Line 8 - Condition is true")
End If
' lets change the value of a and b
a = False
b = True
If (a And b) Then
Console.WriteLine("Line 9 - Condition is true")
Else
Console.WriteLine("Line 9 - Condition is not true")
End If
If (Not (a And b)) Then
Console.WriteLine("Line 10 - Condition is true")
End If
Console.ReadLine()
End Sub
End Module
当上述代码被编译和执行时,它产生以下结果:
Line 1 - Condition is true
Line 2 - Condition is true
Line 4 - Condition is true
Line 5 - Condition is true
Line 6 - Condition is true
Line 7 - Condition is true
Line 8 - Condition is true
Line 9 - Condition is not true
Line 10 - Condition is true
以上内容是否对您有帮助:
更多建议: