C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
It often has an upper and lower bound. The For-loop proceeds through a range of values. A step indicates the progression.
Other loops, such as While, continue until a condition is met. And For-Each requires a collection. In complex loops, where the end is not yet known, While is best.
For-loop. This example uses the lower bound 0 and the upper bound 5 in the For-loop statement. Please remember that the two bounds are inclusive.
Inclusive: This means all the numbers in the range, including 0 and 5, will be reached.
Tip: In this example, we see the Exit For statement. This statement breaks out of the enclosing For-loop.
Tip 2: Exit works in all loops and Subs. Please see the detailed information about Exit.
Based on:
.NET 4.5
VB.NET program that uses For
Module Module1
Sub Main()
' This loop goes from 0 to 5.
For value As Integer = 0 To 5
' Exit condition if the value is three.
If (value = 3) Then
Exit For
End If
Console.WriteLine(value)
Next
End Sub
End Module
Output
0
1
2

For step. Here we want to decrement the counter variable instead of increment it. In other words, we go down not up. We start at 10 and then continued own in steps of 2 to 0.
Also: The Step keyword is used near the end of the For-statement. A step is the delta each loop iteration will have.
So: If you want to decrement by 1 each time, you can use -1. If you want to increment by 1, use 1.
VB.NET program that uses For Step
Module Module1
Sub Main()
' This loop uses Step to go down 2 each iteration.
For value As Integer = 10 To 0 Step -2
Console.WriteLine(value)
Next
End Sub
End Module
Output
10
8
6
4
2
0

Nested loops. In many programs, nested loops are essential. In a For-loop, we uniquely name the iteration variable. And we reference all iteration variables (row, column) in an inner block.
VB.NET program that uses nested loops
Module Module1
Sub Main()
' Use a nested For-loop.
For row As Integer = 0 To 2
For column As Integer = 0 To 2
Console.WriteLine("{0},{1}", row, column)
Next
Next
End Sub
End Module
Output
0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2

String Chars. The For and For-Each loops can be used on String variables. This gives us a way to check, or process, each character in the Object data.
For each: The For-Each loop can also be used on Strings. When you do not need the index, For-Each is a better, cleaner choice.
VB.NET program that uses For loop on String
Module Module1
Sub Main()
Dim value As String = "cat"
' Start at zero and proceed until final index.
For i As Integer = 0 To value.Length - 1
' Get character from string.
Dim c As Char = value(i)
' Test and display character.
If c = "c" Then
Console.WriteLine("***C***")
Else
Console.WriteLine(c)
End If
Next
End Sub
End Module
Output
***C***
a
t

Adjacent indexes. Often in For-loops, we need adjacent indexes. We can start at the second index (1) and then access the previous element each time, getting all pairs.
Tip: With this For-loop, we could check for duplicates in a sorted array, or repeated values in any array.
VB.NET program that uses For, adjacent indexes
Module Module1
Sub Main()
Dim value As String = "abcd"
' Start at one so the previous index is always valid.
For i As Integer = 1 To value.Length - 1
' Get adjacent characters.
Dim c As Char = value(i - 1)
Dim c2 As Char = value(i)
Console.WriteLine(c & c2)
Next
End Sub
End Module
Output
ab
bc
cd

Long, non-integer indexes. The For-loop supports non-integer indexes like Long, Short and UShort. Char is not supported. Here we use For with a Long index.
VB.NET program that uses Long index
Module Module1
Sub Main()
' Loop over last three Longs.
For d As Long = Long.MaxValue To Long.MaxValue - 2 Step -1
Console.WriteLine(d)
Next
End Sub
End Module
Output
9223372036854775807
9223372036854775806
9223372036854775805
Iterator, yield. A function can be marked as an Iterator. In an Iterator, we yield values. We call an Iterator in a loop and it sequentially returns new values.
Code. The For-loop is a core looping construct in the VB.NET language. It provides a way to explicitly specify the loop bounds. And thus it often leads to more robust code.
Fewer bugs. With the for-keyword, fewer careless bugs may occur. Boundaries are clear, well-defined. Errors are often caused by incorrect loop boundaries.