Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

7.13. System.Array Collecties

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Een array is een verzameling van elementen van hetzelfde datatype.
Visual Basic 2012 Broncode - Codevoorbeeld 142
Option Strict On
Option Explicit On

Module Example1
    Public Sub Main()
        Dim array1 As Integer()
        '
        array1 = New Integer() {1, 2, 3}                                   ' (1)
        Dim array2 As Integer() = New Integer() {4, 5, 6}
        Dim array3 As Integer() = {4, 5, 6}                                ' (2)
        '
        Dim array4 As Integer() = array1                                   ' (3)
        '
        Dim array5 As System.Array
        array5 = array3                                                    ' (4)
        array5 = New String() {"abc", "def"}                               ' (4)
    End Sub
End Module
Op regel (1) zie je dat in de expressie die de toekenningswaarde vormt, een "object initializer" wordt gebruikt met "array initializer".  Deze expressie zal de array instantiëren en de referentie van de instantie opleveren.  Deze referentie wordt hier dus aan de variabele array1 toegekend.

Een verkorte notatie - om hetzelfde resultaat te bekomen - zie je in regel (2) waar enkel de array initializer wordt gebruikt.

Regel (3) maakt duidelijk dat arraytypes ook referencetypes zijn, waarbij de variabelen slechts de referentie/verwijzing naar de arrayinstantie bevatten.  Een belangrijk gekend gevolg is dat meerdere variabelen kunnen wijzen naar een zelfde instantie.  Na de uitvoer van regel (3) zullen beide variabelen array1 en array4 naar dezelfde array instantie wijzen.

Elk arraytype, of het nu bijvoorbeeld een ééndimensionale Integer array is ( Integer()) of een driedimensionale Person array (Person(,,)) is een specialisatietype van het System.Array type.
Wat als gevolg heeft dat een variabele van het type System.Array kan wijzen naar eender welk soort array instantie, zoals gedemonstreerd op regel (4).

In onderstaand voorbeeld worden enkele members uit het type System.Array gedemonstreerd.
Visual Basic 2012 Broncode - Codevoorbeeld 143
Module Example2
    Public Sub Main()
        ' information retrieval :
        Dim array1 As Byte(,) = New Byte(,) {{1, 2, 3}, {4, 5, 6}}
        ' elements-count :
        Console.WriteLine(array1.Length)           ' 6
        ' dimensions-count :
        Console.WriteLine(array1.Rank)             ' 2
        ' length second dimension :
        Console.WriteLine(array1.GetLength(1))     ' 3
        ' lowerbound first dimension :
        Console.WriteLine(array1.GetLowerBound(0)) ' 0
        ' upperbound second dimension :
        Console.WriteLine(array1.GetUpperBound(1)) ' 2
        '
        ' searching in a 1-dimensional array :
        Dim array2 As Integer() = New Integer() {1, 2, 3, 2, 5}
        Dim searchValue As Integer = 2
        ' first index of element with value 2 in 'array2' :
        Console.WriteLine(Array.IndexOf(array2, searchValue))        ' 1
        ' last index starting at index 3 of element with value 2 in 'array2' :
        Console.WriteLine(Array.LastIndexOf(array2, searchValue, 3)) ' 3
        ' first index starting at index 2 of element with value 2 in 'array2',
        ' searching over a length of 1 element :
        Console.WriteLine(Array.IndexOf(array2, searchValue, 2, 1))  ' -1
        array2(3) = 4                                                     ' (1)
        ' binary search of element with value 2 in 'array2' :
        Console.WriteLine(Array.BinarySearch(array2, searchValue))   ' 1
        '
        ' reversing an array :
        PrintArray(array2)   ' "1 - 2 - 3 - 4 - 5 - "
        Array.Reverse(array2)
        PrintArray(array2)   ' "5 - 4 - 3 - 2 - 1 - "
        ' reversing 3 elements in 'array2' starting at index 1 :
        Array.Reverse(array2, 1, 3)
        PrintArray(array2)   ' "5 - 2 - 3 - 4 - 1 - "
        '
        ' sorting an array :                                                (2)
        Dim array3 As String() = New String() {"Paul", "John", "Jane"}
        PrintArray(array3)   ' "Paul - John - Jane - "
        Array.Sort(array3)
        PrintArray(array3)   ' "Jane - John - Paul - "
        Array.Reverse(array3)
        PrintArray(array3)   ' "Paul - John - Jane - "
        Array.Sort(array3, 1, 2)
        PrintArray(array3)   ' "Paul - Jane - John - "
        '
        ' clearing an array :
        ' clearing 2 elements of 'array3' starting at index 0 :
        Array.Clear(array3, 0, 2)
        PrintArray(array3)   ' " -   - John - "
        '
        ' copying elements of an array :
        Dim array4 As Byte() = New Byte() {1, 2, 3, 4, 5, 6, 7, 8, 9}
        Dim array5(5) As Byte                                             ' (3)
        Array.Copy(array4, array5, 6)
        PrintArray(array5)   ' "1 - 2 - 3 - 4 - 5 - 6 - "
        Array.Copy(array4, 2, array5, 1, 3)
        PrintArray(array5)   ' "1 - 3 - 4 - 5 - 5 - 6 - "
        '
        Console.ReadLine()
    End Sub
    Public Shared Sub PrintArray(ByVal array As Array)
        For Each element As Object In array                               ' (4)
            If element IsNot Nothing Then                                 ' (5)
                Console.Write(element.ToString() & " - ")
            End If
        Next
        Console.WriteLine()
    End Sub
End Module
Console Application Output
6
2
3
0
2
1
3
-1
1
1 - 2 - 3 - 4 - 5 -
5 - 4 - 3 - 2 - 1 -
5 - 2 - 3 - 4 - 1 -
Paul - John - Jane -
Jane - John - Paul -
Paul - John - Jane -
Paul - Jane - John -
John -
1 - 2 - 3 - 4 - 5 - 6 -
1 - 3 - 4 - 5 - 5 - 6 -
(1) : De Array.BinarySearch() method verwacht een gesorteerde ééndimensionale array.

(2) : Bij het gebruik van de Array.Sort() method worden de elementen volgens een "quicksort" algoritme gesorteerd.  Op basis van wat de elementen gesorteerd worden, wordt verderop behandeld.

(3) : Bij gebruik van de Array.Copy() method moet de "destination array" voldoende groot zijn, zoniet treedt er een exception op.

(4) : De elementen van een array kunnen overlopen worden met een For Each iteratie.

(5) : Een Boolean expressie Not x Is Nothing kan ook geformuleerd worden door te stellen x IsNot Nothing.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.