HomeSearch

VB.NET Array Examples, String Arrays

Create string and integer arrays with initializers. Get elements, and use Length and For Each loops.
Array. Stones line the road, one after another, like an array. In an array, one element is stored after another in a linear way. Arrays often provide the best performance.
Concepts. Other collections are built with internal arrays. There are many ways to initialize arrays. We can use Array class methods to change them.
String array. Here we create a 4-element String array. We place 4 String references inside it. The strings are actually not stored in the array.

Instead: Reference values are stored in the array. And the objects are stored on the managed heap.

For Each: We use a For Each loop to iterate over the string elements within the array.

For Each, ForStrings
VB.NET program that uses String array Module Module1 Sub Main() ' Create array of maximum index 3. Dim array(3) As String array(0) = "dot" array(1) = "net" array(2) = "perls" array(3) = CStr(999) ' Display. For Each element As String In array Console.Write(element) Console.Write("... ") Next End Sub End Module Output dot... net... perls... 999...
String array, initialization. A string array is created in various ways. In the VB.NET language we can create the array with all its data in an initialization statement.

Here: In this example, we create 2 string arrays. The first array is created with an initialization statement.

Note: In VB.NET syntax, you do not need to specify the size of the array on the left side.

Second: The next array uses the longer syntax. You must specify the capacity of the array in the Dim statement.

VB.NET program that uses arrays Module Module1 Sub Main() ' Create an array with the simple initialization syntax. Dim array() As String = {"dog", "cat", "fish"} ' Loop over the array. For Each value As String In array Console.WriteLine(value) Next ' Pass array as argument. M(array) ' Create an array in several statements. ' ... Use the maximum index in the declaration. ' ... Begin indexing at zero. Dim array2(2) As String array2(0) = "bird" array2(1) = "dog" array2(2) = "gopher" ' Loop. For Each value As String In array2 Console.WriteLine(value) Next ' Pass as argument. M(array2) End Sub Sub M(ByRef array() As String) ' Write length. Console.WriteLine(array.Length) End Sub End Module Output dog cat fish 3 bird dog gopher 3
Integer array. There are many syntax forms we use to declare 1D arrays. This example creates an array. It specifies the maximum index in the first statement.

Note: We must specify the maximum index, not the actual array element count or length.

VB.NET program that uses array Module Module1 Sub Main() ' Create an array. Dim array(2) As Integer array(0) = 100 array(1) = 10 array(2) = 1 For Each element As Integer In array Console.WriteLine(element) Next End Sub End Module Output 100 10 1
Integer array, initializer. Often you can initialize an array in a simpler way than in the previous example. Here, we use the curly-bracket { } syntax to create an array of 3 elements.
VB.NET program that uses another array syntax form Module Module1 Sub Main() ' Create array of three integers. Dim array() As Integer = {10, 30, 50} For Each element As Integer In array Console.WriteLine(element) Next End Sub End Module Output 10 30 50
For-loop, Length. We can use the For-loop construct. This allows us to access the index of each element. This is useful for additional computations or logic.

Also: Using the For-loop syntax is better for when you need to modify elements within the array.

VB.NET program that uses For loop on array Module Module1 Sub Main() ' New array of integers. Dim array() As Integer = {100, 300, 500} ' Use for-loop. For i As Integer = 0 To array.Length - 1 Console.WriteLine(array(i)) Next End Sub End Module Output 100 300 500
Array argument. We can pass an array to a subroutine or function. Please note that the entire array is not copied. Just a reference to the array is copied.
VB.NET program that passes array as argument Module Module1 Sub Main() Dim array() As Integer = {5, 10, 20} ' Pass array as argument. Console.WriteLine(Example(array)) End Sub ''' <summary> ''' Receive array parameter. ''' </summary> Function Example(ByVal array() As Integer) As Integer Return array(0) + 10 End Function End Module Output 15
Return. We can return an array. This program shows the correct syntax. The Example function creates a two-element array and then returns it.

Then: The Main subroutine displays all its results by calling String.Join on them.

Join
VB.NET program that returns array Module Module1 Sub Main() Console.WriteLine(String.Join(",", Example())) End Sub ''' <summary> ''' Return array. ''' </summary> Function Example() As String() Dim array(1) As String array(0) = "Perl" array(1) = "Python" Return array End Function End Module Output Perl,Python
First, last. We get the first element with the index 0. For the last element, we take the array Length and subtract one. This works on all non-empty, non-Nothing arrays.

Caution: Arrays that are Nothing will cause a NullReferenceException to occur if you access elements on them.

Also: An empty array (one with zero elements) has no first or last element, so this code also will fail.

ToCharArray: In the example, we use the ToCharArray Function to convert a String "abc" into an array of three Chars.

ToCharArray
VB.NET program that gets first, last elements Module Module1 Sub Main() ' Get char array of 3 letters. Dim values() As Char = "abc".ToCharArray() ' Get first and last chars. Dim first As Char = values(0) Dim last As Char = values(values.Length - 1) ' Display results. Console.WriteLine(first) Console.WriteLine(last) End Sub End Module Output a c
If-test. Often we must check that an index is valid—that it exists within the array. We can use an If-statement. Here I check that the index 2 is less than the length (which is 3).If Then

So: The index 2 can be safely accessed. But the index 50, tried next, causes an IndexOutOfRangeException.

VB.NET program that checks index Module Module1 Sub Main() Dim values() As Integer = {5, 10, 15} ' Check that index is a valid position in array. If 2 < values.Length Then Console.WriteLine(values(2)) End If ' This causes an exception! Dim value = values(50) End Sub End Module Output 15 Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.
Length, LongLength. An array stores its element count. The Length property returns this count as an Integer. LongLength, useful for large arrays, returns a Long value.

Note: The length of every array is stored directly inside the array object. It is not computed when we access it. This makes it fast.

VB.NET program that uses Length property Module Module1 Sub Main() ' Create an array of 3 strings. Dim array() As String = {"Dot", "Net", "Perls"} Console.WriteLine(array.Length) Console.WriteLine(array.LongLength) ' Change the array to have two strings. array = {"OK", "Computer"} Console.WriteLine(array.Length) Console.WriteLine(array.LongLength) Console.ReadLine() End Sub End Module Output 3 3 2 2
Empty array. How does one create an empty array in VB.NET? We specify the maximum index -1 when we declare the array—this means zero elements.

Length: To test for an empty array, use an if-statement and access the Length property, comparing it against 0.

VB.NET program that creates empty array Module Module1 Sub Main() ' Create an empty array. Dim array(-1) As Integer ' Test for empty array. If array.Length = 0 Then Console.WriteLine("ARRAY IS EMPTY") End If End Sub End Module Output ARRAY IS EMPTY
Object arrays. In VB.NET, Strings inherit from the Object class. So we can pass an array of Strings to a method that requires an array of Objects.
VB.NET program that uses Object array Module Module1 Sub Main() ' Use string array as an object array. PrintLength(New String() {"Mac", "PC", "Android"}) End Sub Sub PrintLength(ByVal array As Object()) Console.WriteLine("OBJECTS: {0}", array.Length) End Sub End Module Output OBJECTS: 3
IEnumerable. Arrays in VB.NET implement the IEnumerable interface (as does the List type). So we can pass an array to a method that accepts an IEnumerable.

Info: We can then loop over the elements in the IEnumerable argument with For Each.

IEnumerable
VB.NET program that uses IEnumerable with array Module Module1 Sub Main() ' Pass an array to a method that requires an IEnumerable. LoopOverItems(New Integer() {100, 500, 0}) End Sub Sub LoopOverItems(ByVal items As IEnumerable) ' Use For Each loop over IEnumerable argument. For Each item In items Console.WriteLine("ITEM: {0}", item) Next End Sub End Module Output ITEM: 100 ITEM: 500 ITEM: 0
Performance, array creation. Should we just use Lists instead of arrays in all places? The List generic in VB.NET has an additional performance cost over an equivalent array.List

Version 1: This code creates many zero-element Integer arrays and then tests their Lengths.

Version 2: Here we create many zero-element (empty) Integer Lists, and then we access their Count properties.

Result: Creating an array is faster than creating an equivalent List. Consider replacing Lists with arrays in hot code.

Benchmarks
VB.NET program that tests array creation performance Module Module1 Sub Main() Dim m As Integer = 10000000 ' Version 1: create an empty Integer array. Dim s1 As Stopwatch = Stopwatch.StartNew For i As Integer = 0 To m - 1 Dim array(-1) As Integer If array.Length <> 0 Then Return End If Next s1.Stop() ' Version 2: create an empty List of Integers. Dim s2 As Stopwatch = Stopwatch.StartNew For i As Integer = 0 To m - 1 Dim list As List(Of Integer) = New List(Of Integer)() If list.Count <> 0 Then Return End If 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 End Module Output 3.68 ns array(-1) 10.46 ns New List
Subs. We search arrays with Find. We can copy and resize arrays with helpful subs. The Array.Reverse subroutine reverses the ordering of elements.Array.CopyArray.FindArray.IndexOfArray.ResizeArray.Reverse

Tip: With arrays, using built-in subs is usually best. Writing custom methods should be avoided unless needed.

Types. We must specify a type for every array element. Char arrays are useful for character-level manipulations. An Object array is useful for storing derived types with base references.Byte ArrayChar ArrayObject Array
2D, 3D and jagged. An array can be built of other arrays—this is a jagged array. And VB.NET supports special syntax for 2D and 3D arrays.2D Arrays
ReDim. This is a special keyword in VB.NET that allows us to resize an array. The Array.Resize method could be used, but ReDim has shorter syntax.ReDim
2D array alternatives. There are some complexities involved in multidimensional arrays. They can cause excess memory usage. And this can negatively impact performance in programs.

Dictionary: In a Dictionary, we could use a string key containing the three numbers to store elements. This is not ideal, but could help.

Dictionary

List: For small amounts of data, we could use a List of Tuples (with coordinate items). Linear searches can locate elements.

Tuple
Convert. We can convert types like an ArrayList into an array. Often built-in methods, like ToArray are available. We should use them when possible.Convert ArrayList, ArrayConvert List, Array
Choose. VB.NET has global functions that have interesting effects. One example is the Choose function. This returns a specific element in an array.Choose
Sort. One common task you must perform when using string arrays is sorting them. Typically, you will want an alphabetic (ASCII) sort.Sort
A review. Arrays are an important type. They are used inside other types, such as List and Dictionary, to implement those types' storage. They are often faster.
© 2007-2019 Sam Allen. Every person is special and unique. Send bug reports to info@dotnetperls.com.
Home
Dot Net Perls