Arrays 1. Inleiding
2. Aanmaken
3. Vullen met gegevens
4. Uitlezen
5. Functies
6. Besluit
1. Inleding
In deze tutorial zal ik het hebben over hoe je arrays in .NET gebruikt. Iedereen weet wel wat een array is.
In een variabele kan je maar een waarde opslaan en in een array kan je een reeks van waardes opslaan.
Alle waardes die je in een array steekt moeten wel allemaal van hetzelfde type zijn, geen strings en integers in een array dus.
Je kan elk van deze waardes dan ook apart aanroepen aan de hand van een index, helemaal niet zo moeilijk dus.
En in .NET is het gebruik van arrays ook helemaal niet zo moeilijk. In deze tutorial leg ik uit hoe je een array
aanmaakt en hoe je de waardes er van ophaalt. Code zal zowel voor VB.NET als C#.NET voorzien zijn.
top
2. Aanmaken
Als je een array aanmaakt moet je er niet direct waardes in steken, je kan perfect een array aanmaken en er pas later waardes in steken. Als je pas later waardes gaat toekennen moet je wel eerst een nieuwe instantie maken van het array-object en meegeven hoeveel waardes er in de array kunnen. Wanneer je direct de array gaat vullen met waardes moet die allemaal niet. In het stukje code hieronder wordt een array aangemaakt van strings en daarna een van integers. Er worden nog geen waardes in gestoken, dat is voor het stuk daarna.
C# | VB |
//declaratie van een string-array 'talen' zonder waardes string[] namen; string[] namen = new string[5];
|
'declaratie van een string-array 'talen' zonder waardes Dim namen As String() Dim namen As String() = New String(4)
|
//declaratie van een integer-array 'getallen' zonder waardes int[] getallen; int[] getallen = new int[10];
|
'declaratie van een integer-array 'getallen' zonder waardes Dim getallen As Integer() Dim getallen As Integer() = New Integer(9)
|
Als je goed kijkt zie je dat er tussen C# en VB een verschil is bij het bepalen van het aantal elementen. Hoewel ze allebei evenveel elementen kunnen bevatten staat, is het getal bij VB 1 minder. Bij C# is het eenvoudig, het getal tussen de haakjes is het aantal elementen. Bij VB is het anders, daar begin je te tellen bij 0. Dus 0, 1, 2, 3 en 4: vijf elementen. In het volgende stukje gaan we de arrays die we nu hebben aangemaakt vullen met waardes.
top
3. Vullen
Nu dat onze array is aangemaakt kunnen we er waardes gaan in steken. In de code zullen we verschillende manieren bekijken om de array te vullen. Als eerste gaan we voort op het stukje waar we de array aanmaken en ineens vullen met waardes, omdat dat in het vorige stuk niet van toepassing was. Daarna zullen we de aangemaakte array op de andere manier vullen.
C# | VB |
//aangemaakte string-array direct vullen string[] talen = {"ASP", "C#", "VB", "JAVA", "PHP"};
//aangemaakte integer-array direct vullen int[] getallen = {1, 2, 3, 4, 5};
|
'aangemaakte string-array direct vullen Dim talen As String() = {"ASP", "C#", "VB", "JAVA", "PHP" }
'aangemaakte integer-array direct vullen Dim getallen As Integer() = {1, 2, 3, 4, 5}
|
In het vorige stuk stond dat je dus niet direct de grootte moest meegeven als je ineens de array gaat vullen met waardes. De arrays zijn aangemaakt en krijgen nu ineens de grootte mee, voor beide is dat dus vijf elementen. Elementen van het type string hebben dubbele quotes rond de waardes en elementen van het type integer geen. Voor een array van chars horen er single quotes te staan rond de waardes.
Nu gaan we onze array element per element vullen. In het vorige stuk hadden we al een array 'talen' en een array 'getallen' aangemaakt en meegegeven hoeveel elementen deze kon bevatten. Voor de duidelijkheid staat de declaratie nog eens bij de code. Het vullen met waardes van een array is zero - index gebaseerd. Dit wil zeggen dat je begint te tellen bijn 0. Onze array heeft vijf elementen en gaat dus van 0 tot en met 4.
C# | VB |
//declaratie string[] talen = new string[5]; //opvullen talen[0] = "ASP"; talen[1] = "C#"; talen[2] = "VB"; talen[3] = "JAVA"; talen[4] = "PHP";
//hetzelfde geldt dus voor een integer-array int[] getallen = new int[5]; getallen[0] = 1; getallen[1] = 2; getallen[2] = 3; getallen[3] = 4; getallen[4] = 5;
|
'declaratie Dim talen As String() = New String(4) 'opvullen talen(0) = "ASP" talen(1) = "C#" talen(2) = "VB" talen(3) = "JAVA" talen(4) = "PHP"
'hetzelfde geldt dus voor een integer-array Dim getallen As Integer() = New Integer(4) getallen(0) = 1 getallen(1) = 2 getallen(2) = 3 getallen(3) = 4 getallen(4) = 5 |
De arrays zijn nu gevuld met gegevens, maar nu zijn we er nog niet echt iets mee. Om ze weg te schrijven op het scherm moeten we ze uitlezen. Dit gebeurt in het volgende stuk.
top
4. Uitlezen
Tot hiertoe hebben we twee arrays: een string-array 'talen' en een integer-array 'getallen'. Nu willen we de waardes op het scherm tonen, daarvoor moeten we de array uitlezen. Het bepalen van een element van de array gebeurt aan de hand van de index. Let op: ook bij het uitlezen wordt er gebruik gemaakt van een zero - based index. In de code maken we een variabele aan en zetten de waarde hiervan op een gekozen element uit de array:
C# | VB |
//declaratie van een variabele string taal; //de waarde van de variabele gelijk zetten aan een element taal = talen[1]; //de waarde van taal is nu 'C#'
//hetzelfde geldt voor een integer-array int getal; getal = getallen[2]; //de waarde van getal is nu 3
|
'declaratie van een variabele Dim taal As String 'de waarde van de variabele gelijk zetten aan een element taal = talen(2) 'de waarde van taal is nu VB
'hetzelfde geldt voor een integer-array Dim getal As Integer getal = getallen(2) 'de waarde van getal is nu 3 |
Bij een string-array is het meestal duidelijk, maar bij een integer-array kan het nogal verwarrend zijn als je het tweede element neemt en de waarde is 3. Let hier dus zelf later ook op dat je je niet vergist! Later zien we nog een andere manier om in één keer een array uit te lezen, maar dat is voor later. Nu dat we een waarde van 1 element van een array kunnen ophalen willen we er nog iets mee doen ook, wegschrijven op het scherm bijvoorbeeld. Dit komt in het stukje 'Praktisch'.
top
5. Functies
We kunnen nu een array aanmaken, vullen met gegevens en uitlezen. Maar daar blijft het niet bij. Er zijn tal van functies die je op een array kan toepassen. In dit stuk ga we de belangrijkste functies bekijken, uitleg zal voorzien zijn. Enkele belangrijke en veelgebruikte functies zijn:
- het aantal elementen bepalen
- het aantal dimensies bepalen
- het eerste / laatste element bepalen
- de elementen van de array omdraaien
- de array sorteren
- de array resizen (nieuwe lengte meegeven)
- zoeken in een array naar een bepaalde waarde
- kijken of een bepaalde waarde bestaat in de array
- een element leegmaken / op nul zetten
Al deze functies zullen besproken en uitgelegd worden en met code voorzien zijn. In het stuk 'Praktijk' gaan we met de Web Developer alles uitvoeren zodat alles duidelijk zal worden.
1. Aantal elementen
Met deze functie haal je de grootte van de array op, de returnwaarde van deze functie is een integer.
C# | VB |
int grootte = talen.Length;
|
Dim grootte As Integer = talen.Length
|
2. Aantal dimensies
Deze functie geeft het aantal dimensies van de array weer, ook hier is de returnwaarde een integer.
C# | VB |
int rang = talen.Rank;
|
Dim rang As Integer = talen.Rank
|
3. Eerste / laatste element
Als je snel het eerste of het laatste element van de array wil ophalen kan je dat met deze functies ophalen.
C# | VB |
string eerste = talen.First(); string laatste = talen.Last();
|
Dim eerste As String = talen.First() Dim laatste As String = talen.Last()
|
4. Array omdraaien
Deze functie draait heel de reeks van waardes van een array om. Het laatste element wordt het eerste, het voorlaatste wordt het tweede, enz...
C# | VB |
Array.Reverse(talen); |
System.Array.Reverse(talen) |
Let op: bij VB moet je de klasse 'System' er voor zetten!
5. Sorteren
Het kan ook zijn dat je de elementen van een array wilt sorteren op alfabetische volgorde of op getal. Standaard geef je aan deze functie je array als parameter mee, maar je kan ook nog twee parameters meegeven. Deze twee zijn de index en de length, als je deze ook gebruikt bepaal je waar je in de array gaat beginnen sorteren en hoeveel elementen je vanaf dat punt gaat sorteren.
C# | VB |
Array.Sort(talen);
//met extra parameters Array.Sort(talen, 1, 3); //nu worden elementen 2 tot en met 4 gesorteerd
|
System.Array.Sort(talen)
'met extra parameters System.Array.Sort(talen, 1, 3) 'nu worden elementen 2 tot en met 4 gesorteerd
|
6. Resizen (nieuwe grootte)
In .NET 2.0 was het enkel in VB mogelijk om een array een nieuwe grootte mee te geven, dit kon je doen door 'ReDim' te gebruiken, in C# was het al helemaal niet mogelijk. Nu, in .NET 3.5 is het op een eenvoudige manier mogelijk voor beide talen.
C# | VB |
//array-grootte met 1 verhogen en een waarde bijgeven Array.Resize(ref talen, 6); talen[5] = "JavaScript";
|
'array-grootte met 1 verhogen en een waarde bijgeven Array.Resize(talen, 6) talen(5) = "JavaScript"
|
Let ook hier op iets belangrijk: bij C# moet je een referentie naar je array meegeven meegeven, bij VB niet!
7. Zoeken / controleren van een element in een array
Zoeken in een array naar een bepaalde waarde kan op vrij veel verschillende manieren. Elke manier staat in de code met de uitleg in commentaar erbij.
C# | VB |
//BinarySearch en IndexOf, deze geven beide de index van het element //in de array, als de zoekterm niet bestaat wordt -1 teruggegeven int index = Array.BinarySearch(talen, "C#"); int index = Array.IndexOf(talen, "C#");
//Exists en Find gebruiken allebei eenzelfde externe functie maar //geven een ander resultaat. Exists geeft een boolean en Exists de waarde, //als er niets wordt gevonden is het resultaat bij Find leeg bool flag = Array.Exists(talen, zoekFunctie); string result = Array.Find(talen, zoekFunctie); //zoekFunctie bool zoek(string invoer) { if (input == "ASP") return true; else return false; }
|
'BinarySearch en IndexOf, deze geven beide de index van het element 'in de array, als de zoekterm niet bestaat wordt -1 teruggegeven Dim index As Integer = System.Array.BinarySearch(talen, "VB") Dim index As Integer = System.Array.IndexOf(talen, "VB")
'Exists en Find gebruiken allebei eenzelfde externe functie maar 'geven een ander resultaat. Exists geeft een boolean en Exists de waarde, 'als er niets wordt gevonden is het resultaat bij Find leeg Dim flag As Boolean = System.Array.Exists(talen, AddressOf zoekFunctie) Dim result As String = System.Array.Find(talen, AddressOf zoekFunctie) 'zoekFunctie Public Shared Function zoek(ByVal input As String) As Boolean
If input = "ASP" Then Return True Else Return False End If
End Function
|
8. Een element leegmaken / op nul zetten
Wanneer het nodig acht kan je de waarde van een element resetten. Voor een string is dit leegmaken en voor een integer is dit de waarde op 0 zetten.
C# | VB |
//heel de array Array.Clear(talen);
//1 element (enkel het eerste) Array.Clear(talen, 0, 1);
//meerdere elementen (het eerste en tweede) Array.Clear(talen, 0, 2);
|
'heel de array Array.Clear(talen); '1 element (enkel het eerste) Array.Clear(talen, 0, 1); 'meerdere elementen (het eerste en tweede) Array.Clear(talen, 0, 2); |
top
6. Besluit
Zo, dat was het voor deze tutorial. Ik hoop dat er weer een klein stukje duidelijker is geworden.
Indien er nog vragen of opmerkingen zijn, laat dat dan gerust weten. Als er zaken zijn die volgens
jou nog ontbreken of die er zeker nog bij moeten, laat dit dan ook weten dan zal ik dit doen.
Voor de leden: stem aub!
top
|