C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
And: The Else-statement has no "Then" part. We end a block with an "End If" statement.
Equals: We do not use 2 equals signs together in an If-statement—we just use one.
Tip: Visual Studio will automatically insert the "Then" and "End If" parts of an If-statement.
VB.NET program that uses If, ElseIf and Else
Module Module1
Sub Main()
' Get input.
Dim s As String = Console.ReadLine()
' Check input with If, ElseIf and Else.
If s = "cat" Then
Console.WriteLine("You like cats")
ElseIf s = "dog" Then
Console.WriteLine("You like dogs")
Else
Console.WriteLine("No choice made")
End If
End Sub
End Module
Output
dog
You like dogs
Not: We also can apply the Not-keyword to the ElseIf clause. We cannot use the "!=" operator.
VB.NET program that uses If Not
Module Module1
Sub Main()
' An integer variable.
Dim i As Integer = 100
' Test integer against 100 and 200.
If Not i = 100 Then
Console.WriteLine("i not 100")
ElseIf Not i = 200 Then
Console.WriteLine("i not 2")
End If
End Sub
End Module
Output
i not 2
And: Please consider the OrElse and AndAlso operators for early termination—this can lead to a performance improvement.
VB.NET program that uses And, Or
Module Module1
Sub Main()
Dim left As Integer = 10
Dim right As Integer = 100
' Use "and" in expression.
If left = 10 And right = 100 Then
Console.WriteLine(1)
End If
' Use "or" in expression.
If left = 5 Or right = 100 Then
Console.WriteLine(2)
End If
End Sub
End Module
Output
1
2
Note: If we use Or instead of OrElse, both IsBird() and IsCat() will be executed in this VB.NET program.
Important: If we want to finish the expression as soon as a true result is found, we must use OrElse.
VB.NET program that uses OrElse
Module Module1
Function IsBird() As Boolean
Console.WriteLine("IsBird returns true")
Return True
End Function
Function IsCat() As Boolean
Console.WriteLine("IsCat not reached")
Return False
End Function
Sub Main()
If IsBird() OrElse IsCat() Then
Console.WriteLine("DONE")
End If
End Sub
End Module
Output
IsBird returns true
DONE
Tip: For "||" in VB.NET use the OrElse operator. And for "&&" in VB.NET use the AndAlso operator.
VB.NET program that uses AndAlso
Module Module1
Function IsRed() As Boolean
Console.WriteLine("IsRed: false")
Return False
End Function
Function IsBlue() As Boolean
Console.WriteLine("IsBlue: true")
Return True
End Function
Sub Main()
If IsRed() AndAlso IsBlue() Then
Console.WriteLine("DONE")
End If
End Sub
End Module
Output
IsRed: false
Here: The If-statement calls the IsValid Function. IsValid returns True if the Integer argument is within a certain range.
BooleanSo: If the Integer is within the specified range (10 to 100 inclusive) the inner block of the If-statement is reached.
VB.NET program that uses Function, If-statement
Module Module1
''' <summary>
''' See if size is valid.
''' </summary>
Function IsValid(ByVal size As Integer) As Boolean
' Returns true if size is within this range.
Return size >= 10 And size <= 100
End Function
Sub Main()
' Size variable.
Dim size As Integer = 50
' Call IsValid function in an If-expression.
If IsValid(size) Then
Console.WriteLine("Valid size")
End If
End Sub
End Module
Output
Valid size
Here: We introduce a Boolean that stores whether the animal and size variables indicate a "big cat."
Then: We can test the isBigCat variable in the two If-statements. This reduces code repetition and makes the program easier to read.
Also: In some programs, we can use this approach to reduce expensive method calls by storing their results for later reuse.
VB.NET program that tests local variable
Module Module1
Sub Main()
Dim animal As String = "cat"
Dim size As Integer = 10
Dim color As String = "grey"
' Store expression result in local variable.
Dim isBigCat As Boolean = (animal = "cat" And size >= 8)
' Test local variable.
If isBigCat And color = "grey" Then
Console.WriteLine(True)
End If
If isBigCat And color = "white" Then
Console.WriteLine(False)
End If
End Sub
End Module
Output
True
Tip: This operator is available on Integers, Strings, Doubles and other types. It can help keep VB.NET code shorter.
VB.NET program that uses not equal operator
Module Module1
Sub Main()
Dim temp As Integer = 10
' Use "not equal" operator.
If temp <> 0 Then
Console.WriteLine("Temp not zero")
End If
' Inner statement not reached here.
If temp <> 10 Then
Console.WriteLine("???")
End If
End Sub
End Module
Output
Temp not zero
Version 1: This code tests the most commonly-encountered value last. So multiple checks must be done in the common case.
Version 2: This version checks the most common value first. It provides a "fast path" for the most frequent situation.
Result: It is faster to check for the most common value first. Other optimizations, like Select Case, can be even better in performance.
VB.NET program that reorders If-statements
Module Module1
Sub Main()
Dim m As Integer = 10000000
Dim s1 As Stopwatch = Stopwatch.StartNew
' Version 1: test most common value last.
For i As Integer = 0 To m - 1
Version1(100, 3)
Next
s1.Stop()
Dim s2 As Stopwatch = Stopwatch.StartNew
' Version 2: test most common value first.
For i As Integer = 0 To m - 1
Version2(100, 3)
Next
s2.Stop()
Dim u As Integer = 1000000
Console.WriteLine(((s1.Elapsed.TotalMilliseconds * u) / m).ToString("0.00 ns"))
Console.WriteLine(((s2.Elapsed.TotalMilliseconds * u) / m).ToString("0.00 ns"))
End Sub
Function Version1(ByVal max As Integer, ByVal test As Integer) As Integer
' Test 3 last.
Dim result As Integer = 0
For i As Integer = 0 To max - 1
If test = 1 Then
result += 1
ElseIf test = 2 Then
result -= 1
ElseIf test = 3 Then
result += 2
End If
Next
Return result
End Function
Function Version2(ByVal max As Integer, ByVal test As Integer) As Integer
' Test 3 first.
Dim result As Integer = 0
For i As Integer = 0 To max - 1
If test = 3 Then
result += 2
ElseIf test = 1 Then
result += 1
ElseIf test = 2 Then
result -= 1
End If
Next
Return result
End Function
End Module
Output
114.63 ns Test 1, 2, 3 (3 last)
89.32 ns Test 3, 1, 2 (3 first)
So: Select Case on strings does not improve performance much over the If-statement in the VB.NET language.