Op Youtube
Deze video maakt deel uit van de IIP playlist van de Youtube channel van Rogier van der Linde.
Let op: deze video's zijn al een paar jaar oud, dus hier en daar kunnen kleine afwijkingen voorkomen met deze cursus, die wel altijd up-to-date is.
Wat is een array
Arrays maken deel uit van een breder concept, collecties genoemd. .NET biedt verschillende soorten collecties aan als List
, Stack
, Queue
enz... — zie dit overzicht.
C# als taal kent maar één soort collectie, de array.
Een array is een variabele die verwijst naar een genummerde reeks waarden, startend bij index 0:
Arrays hebben volgende fundamentele eigenschappen:
- het aantal plaatsen is vast
- de plaatsen zijn genummerd vanaf 0
- alle plaatsen hebben hetzelfde type (ofwel
int
, ofwelstring
, ofwelboolean
...) - je kan altijd de waarden instellen of veranderen, de waarden zijn veranderlijk
Declaratie en initialisatie
Voorbeelden:
int[] cijfers = new int[6]; // array van 6 ints
string[] namen = new string[20]; // array van 20 strings
bool[] weekdagenOpen = new bool[7]; // array van 7 bools
Je kunt meteen beginwaarden opgeven tussen accolades, gescheiden met komma's:
int[] getallen = { 5, 8, 3, 12, 7 };
double[] kommagetallen = { 1.5, 10.2, 19.85, 3.1415 };
char[] letters = { 'a', 'b', 'c', 'd' };
string[] fruit = { "appel", "banaan", "citroen" };
Waarden instellen en veranderen
Je kan geen elementen toevoegen of verwijderen in een array; het aantal elementen is vast. Je kan wel de waarde van een element veranderen:
int[] getallen = new int[6]; // array van 6 ints, van 0 tot 5
getallen[0] = -2; // zet getal -2 op eerste plaats
getallen[2] = 7; // zet getal 7 op derde plaats
getallen[4] = 1; // zet getal 1 op vijfde plaats
getallen[5] = 11; // zet getal 11 op zesde (laatste) plaats
string[] namenlijst = new string[5]; // array van 5 strings, van 0 tot 4
namenlijst[0] = "Jef";
namenlijst[1] = "Yasmina";
namenlijst[4] = "Long";
Arrays gebruiken
één element opvragen
Je kunt een waarde uitlezen uit een array op basis van de index van dit element (eerste = index 0):
string[] kleuren = { "blauw", "groen", "rood", "geel" };
string eerste = kleuren[0]; // blauw; eerste element heeft index 0
string tweede = kleuren[1]; // groen; tweede element heeft index 1
string laatste = kleuren[kleuren.Length - 1]; // geel; manier om laatste element op te vragen
lengte opvragen
Met de lengte wordt het aantal beschikbare plaatsen bedoeld, niet het aantal plaatsen dat effectief een waarde
gekregen heeft. Gebruik de Length
property:
int[] getallen = new int[7]; // array met 7 plaatsen → lengte is 7
getallen[0] = 10;
getallen[2] = 5;
getallen[5] = 7;
int lengte = getallen.Length;
Console.WriteLine($"De lengte van de array is: {lengte}");
overlopen met for-loop
Gebruik de for
-lus met de Length
property als je de index van elk element in de array nodig hebt:
string[] namen = { "Zakaria", "Nelly", "Killian", "Chun" };
for (int i = 0; i < namen.Length; i++)
{
string naam = namen[i]; // element op index i
Console.WriteLine($"{i + 1}. {naam}");
}
inlezen met for-loop
Codevoorbeeld voor het inlezen van een array:
string[] namen = new string[4];
int len = namen.Length;
for (int i = 0; i < len; i++) {
Console.Write($"Geef naam {i + 1} van {len}: ");
namen[i] = Console.ReadLine();
}
Console.WriteLine("Bedankt!");
overlopen met foreach-loop
Gebruik foreach
als je de index van de elementen niet nodig hebt:
int[] numbers = { 2, 5, 9, 3, 4, 6, 7 };
foreach (int num in numbers)
{
Console.WriteLine(num);
}
Properties en methodes
Array class
De .NET Array
class biedt volgende properties en methodes:
Property | Omschrijving |
---|---|
Length |
het aantal beschikbare plaatsen in de array |
Methode | Omschrijving |
---|---|
Clear() |
reset alle elementen naar de defaultwaarde (0 voor ints, null voor strings enz...) |
Contains() |
controleert of de array een gegeven waarde bevat |
IndexOf() |
zoekt de positie (index) van een gegeven waarde; -1 indien niet gevonden |
Array.Reverse() |
keert de volgorde van de elementen om |
Array.sort() |
sorteert een gegeven array |
String.split() |
splitst een string in een array |
String.join() |
voegt een array samen tot een string |
voorbeeld: nagaan of waarde voorkomt in een array met Contains()
Gebruik Contains()
(returnwaarde true
of false
):
string[] fruit = { "appel", "banaan", "citroen" };
bool gevonden = fruit.Contains("citroen");
if (gevonden)
{
Console.WriteLine("De array bevat het woord \"citroen\"");
}
voorbeeld: positie van een waarde in een array met IndexOf()
Gebruik IndexOf()
om de positie te vinden (-1 indien niet gevonden):
string[] fruit = { "appel", "banaan", "citroen" };
int pos = fruit.IndexOf("citroen");
if (pos > -1)
{
Console.WriteLine($"Het woord \"citroen\" is gevonden op positie {pos}");
}
voorbeeld: array sorteren met Sort()
Gebruik Array.Sort()
om een array oplopend te sorteren:
int[] getallen = { 7, 3, 9, 2, 6 };
Array.Sort(getallen); // sorteer getallen van klein naar groot
foreach (int getal in getallen)
{
Console.WriteLine(getal);
}
Gebruik in combinatie met Array.Reverse()
om een array aflopend te sorteren:
int[] getallen = { 7, 3, 9, 2, 6 };
Array.Sort(getallen); // sorteer getallen van klein naar groot
Array.Reverse(getallen); // keer volgorde om
foreach (int getal in getallen)
{
Console.WriteLine(getal);
}
String class
De .NET String class biedt volgende methodes:
Methode | Omschrijving |
---|---|
split() |
splitst een string in een array |
join() |
voegt een array samen tot een string |
voorbeeld: array samenvoegen tot een string
Gebruik string.Join()
:
int[] getallen = { 5, 7, 12, 8, 3 }; // → int[] array
string samengevoegd = string.Join(", ", getallen); // "5, 7, 12, 8, 3" → één string
Console.WriteLine(samengevoegd);
voorbeeld: string rond spaties splitsen naar een array
string zin = "dit is een zin met meerdere woorden";
string[] woorden = zin.Split(' '); // verdeel zin in woorden
foreach (string woord in woorden)
{
Console.WriteLine(woord);
}
voorbeeld: string rond karakters splitsen naar een array
Je kan als parameter van Split()
een array van karakters opgeven waarrond gesplitst moet worden:
string txt = "0477/234.56.78"; // → één string
string[] parts2 = txt.Split(new char[] { '/', '.' }); // { "0477", "234", "56", "78" } → string[] array
LINQ extensie methodes
.NET LINQ biedt ook een hoop extensie methodes die je kan gebruiken,
zie 02. NET classes - LINQ extensie methodes voor collecties