Het komt regelmatig voor dat gegevens een bepaalde samenhang hebben. Denk bijvoorbeeld maar aan de List controls waarin meerdere elementen staan. Wilt u dynamisch met dergelijke structuren werken, dan heeft u arrays of collecties nodig. Een array is in feite een variabele, maar met de mogelijkheid om er meerdere waardes in op te slaan. In principe is dit op volgorde, dus heeft iedere waarde een vaste plaats. Een collectie daarentegen gedraagt zich als een verzameling, en dus is er geen volgorde van de waardes die erin zitten. U kunt op basis van een sleutel gegevens opvragen uit een collectie. We geven hier een korte indruk van arrays en collecties, zodat u niet in het diepe belandt als gegevensstructuren aan bod komen. De meeste gegevensstructuren zijn namelijk zeer verwant aan arrays en collecties.
Een array is een rij van waardes. Ieder element in de rij is op te vragen aan de hand van een index. U kunt een array daarom wel zien als een archiefkast waarin alles keurig op volgorde is weggeborgen, zodat het makkelijk terug te vinden is. In principe begint de index bij 0, dus is de hoogste index altijd het aantal elementen min 1. Hoe dit precies werkt ziet u in het voorbeeld hieronder:
VB.NET
Dim LottoTrekking() As Integer = {7, 13, 18, 29, 32, 34, 2} Dim ReserveGetal As Integer = LottoTrekking(6) Dim CdMap(9) As String CdMap(0) = "Steely Dan - Greatest Hits" CdMap(9) = "Dave Matthews Band - Busted Stuff"
C#
int[] LottoTrekking = new int[7] {7, 13, 18, 29, 32, 34, 2}; int ReserveGetal = LottoTrekking[6]; string[] CdMap = new string[10]; CdMap[0] = "Steely Dan - Greatest Hits"; CdMap[9] = "Dave Matthews Band - Busted Stuff";
In het voorbeeld hierboven worden twee arrays gemaakt, LottoTrekking en CdMap. De array LottoTrekking wordt meteen voorzien van waardes. De manier waarop gewerkt wordt met de arrays verschilt enigszins tussen VB.NET en C#. Ten eerste staat bij VB.NET de index tussen ( en ), terwijl in C# de index tussen [ en ] staat. Ten tweede wordt bij VB.NET de eerste array dynamisch gedeclareerd (de grootte ervan kan later nog gewijzigd worden), en de tweede statisch (de grootte ervan staat vast). In C# kan dit niet en worden beide arrays dynamisch gedeclareerd. Hiermee hangt samen dat in C# het new keyword gebruikt wordt om geheugen vrij te maken voor de array, terwijl VB.NET dit impliciet doet. Een laatste belangrijk verschil is de manier waarop de grootte bepaald wordt. In VB.NET geven we de hoogste index die een array mag hebben, terwijl we in C# aangeven hoeveel elementen de array mag bevatten.
Omdat bij een array van te voren bepaald moet worden hoe groot deze moet worden, en het tussentijds veranderen van de grootte lastig is, bevat het .NET Framework een handig alternatief: de ArrayList. De ArrayList is in alle opzichten gelijk aan een array, met het verschil dat u veel makkelijker elementen kunt toevoegen en verwijderen. Verder heeft de ArrayList het voordeel dat de waardes die erin opgeslagen kunnen worden niet beperkt zijn tot hetzelfde type. In een ArrayList kunt u dus op verschillende plaatsen verschillende typen element invoegen. Hieronder ziet u enkele voorbeelden.
VB.NET
Dim LottoTrekking As New ArrayList(New Integer(6) {7, 13, 18, 29, 32, 34, 2}) Dim ReserveGetal As Integer = CInt(LottoTrekking(6)) Dim CdMap As New ArrayList() CdMap.Add("Steely Dan - Greatest Hits") CdMap.Add("Dave Matthews Band - Busted Stuff") CdMap.Remove("Steely Dan - Greatest Hits")
C#
ArrayList LottoTrekking = new ArrayList(new int[7] {7, 13, 18, 29, 32, 34, 2}); int ReserveGetal = (int)LottoTrekking[6]; ArrayList CdMap = new ArrayList(10); CdMap.Add("Steely Dan - Greatest Hits"); CdMap.Add("Dave Matthews Band - Busted Stuff"); CdMap.Remove("Steely Dan - Greatest Hits");
De code hierboven heeft veel weg van de eerdere code, maar werkt op basis van een ArrayList. Deze moet eerst aangemaakt worden, dus wordt het New keyword gebruikt. De LottoTrekking ArrayList wordt gevuld op dezelfde manier als in het eerdere voorbeeld. Zoals u kunt zien kunt u vervolgens de waarde uit de ArrayList halen alsof het een array is. Wel moet de waarde eerst nog geconverteerd worden, omdat een ArrayList allemaal verschillende elementen mag bevatten. De CdMap wordt gevuld met Add, en zoals u kunt zien kunt u een bepaalde waarde eruit verwijderen door die waarde op te geven. Verder kunt u ook met deze ArrayList werken alsof het een array is. De ArrayList heeft nog veel meer mogelijkheden die we hier niet behandelen. U kunt daarover meer te weten komen door in de .NET Framework SDK te zoeken op "ArrayList".
Collecties bestaan uit naam-waarde paren. Dat wil zeggen dat een waarde opgeslagen wordt in een collectie aan de hand van een bepaalde sleutel. Hierdoor heeft een collectie vaak geen vast volgorde, maar dit hangt van het type collectie af. Een voorbeeld van een collectie is een Hashtable, waarvan u hieronder een voobeeld ziet.
VB.NET
Dim Telefoonnummers As Hashtable = New Hashtable() Telefoonnummers.Add("Piet", "020-1234567") Telefoonnummers.Add("Klaas", "010-7654321") Dim TelPiet As String = Telefoonnummers("Klaas").ToString() Telefoonnummers.Remove("Piet")
C#
Hashtable Telefoonnummers = new Hashtable(); Telefoonnummers.Add("Piet", "020-1234567"); Telefoonnummers.Add("Klaas", "010-7654321"); string TelPiet = Telefoonnummers["Klaas"].ToString(); Telefoonnummers.Remove("Piet");
Zoals u ziet verschilt een collectie in gebruik niet veel van een ArrayList, behalve dat u nu met een sleutel werkt waaraan een waarde gekoppeld is. U kunt verder op precies dezelfde wijze gegevens toevoegen en verwijderen. Als u gegevens opvraagt doet u dit aan de hand van de sleutel in plaats van aan de hand van een index.
⌐2002 Microsoft Nederland BV