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
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号