MSDN Documentation

Microsoft Developer Network

VB.NET Logical Operators

Logical operators in Visual Basic .NET are used to combine Boolean expressions. They allow you to create more complex conditions that evaluate to either True or False.

And Operator

The And operator returns True if both operands are True. Otherwise, it returns False.


Dim a As Boolean = True
Dim b As Boolean = False
Dim result As Boolean

result = a And True  ' result is True
result = a And b     ' result is False
            

Or Operator

The Or operator returns True if at least one of the operands is True. It returns False only if both operands are False.


Dim a As Boolean = True
Dim b As Boolean = False
Dim result As Boolean

result = a Or b      ' result is True
result = b Or False  ' result is False
            

Not Operator

The Not operator is a unary operator that inverts the Boolean value of its operand. If the operand is True, it returns False. If the operand is False, it returns True.


Dim a As Boolean = True
Dim result As Boolean

result = Not a  ' result is False
            

Xor Operator

The Xor (exclusive OR) operator returns True if exactly one of the operands is True. If both operands are the same (both True or both False), it returns False.


Dim a As Boolean = True
Dim b As Boolean = False
Dim result As Boolean

result = a Xor b  ' result is True
result = a Xor True ' result is False
result = b Xor False ' result is False
            

AndAlso Operator

The AndAlso operator is a short-circuiting version of And. It evaluates the left operand first. If the left operand is False, the right operand is not evaluated, and the expression returns False. This can be useful for preventing errors when the right operand's evaluation might cause an exception.


Dim isEnabled As Boolean = False
Dim isValid As Boolean = True

' If isEnabled is False, isValid is never checked.
If isEnabled AndAlso isValid Then
    ' This code will not execute.
End If
            

OrElse Operator

The OrElse operator is a short-circuiting version of Or. It evaluates the left operand first. If the left operand is True, the right operand is not evaluated, and the expression returns True. This can improve performance and prevent errors.


Dim hasPermission As Boolean = True
Dim isUserAdmin As Boolean = False

' If hasPermission is True, isUserAdmin is never checked.
If hasPermission OrElse isUserAdmin Then
    ' This code will execute.
End If
            

Operator Precedence

The order in which operators are evaluated is important. Here's a simplified precedence table for logical operators:

Operator Description
Not Logical NOT
AndAlso, And Logical AND
OrElse, Or Logical OR
Xor Logical XOR

Parentheses (()) can be used to explicitly control the order of evaluation.

Tip: For performance and safety, prefer using the short-circuiting operators (AndAlso and OrElse) over their non-short-circuiting counterparts (And and Or) whenever possible.