Een multidimensionale array is een array met meer dan één dimensie. In plaats van alleen een rij van elementen, kun je hiermee rijen en kolommen (of zelfs meer dimensies) structureren. Denk aan een tabel of een schaakbord: dit is handig als je data logisch in twee dimensies wilt ordenen.
Casus
Je wilt een overzicht bijhouden van de behaalde cijfers van vier studenten over drie vakken. In plaats van losse arrays, kun je deze data opslaan in een multidimensionale array waarin elke rij een student en elke kolom een vak representeert.
Hoe zit een multidimensionale array in elkaar?
Een 2D-array wordt in de praktijk opgebouwd als een verzameling geneste arrays. In C# wordt zo’n array gedeclareerd door in de vierkante haken een komma op te nemen (bijvoorbeeld int[,]). Toegang tot een specifiek element gaat vervolgens via twee indexwaarden: de eerste index verwijst naar de rij, de tweede naar de kolom. Hoewel C# ook arrays met drie of meer dimensies ondersteunt (bijvoorbeeld 3D-arrays), zijn 2D-arrays verreweg het meest gebruikelijk.
Met Length, GetLength(0) en GetLength(1) kun je informatie opvragen over de totale lengte, het aantal rijen en kolommen.
int total = cijfers.Length; // totaal aantal elementenint rows = cijfers.GetLength(0); // aantal rijenint cols = cijfers.GetLength(1); // aantal kolommen
3D-array
Een 3D-array heeft drie dimensies: bijvoorbeeld [laag, rij, kolom]. Dit kun je gebruiken voor het representeren van een kubusstructuur of meerdere lagen van data. Je kunt hiermee dus meerdere 2D-tabellen bovenop elkaar stapelen.
Een multidimensionale array gebruik je wanneer je gegevens wilt vastleggen die onderling verband houden, zoals coördinaten van meerdere punten (x, y), cijfers gekoppeld aan leerlingen, tijdschema’s of scores per groep.
Gebruik een 2D-array wanneer
Elk element slechts twee dimensies nodig heeft.
Voorbeelden
Een tabel met cijfers per leerling ([leerling, vak]).
Een raster of bord (zoals een schaakbord) met coördinaten [rij, kolom].
Een tijdschema per dag ([uur, dag]).
Gebruik een 3D-array wanneer
Je gegevensstructuur een extra dimensie vereist, bijvoorbeeld meerdere lagen of categorieën.
Voorbeelden
Een reeks tijdschema’s voor verschillende weken: [week, dag, uur].
Coördinaten in een 3D-ruimte: [x, y, z].
Meerdere klassen met per klas leerlingen en hun cijfers: [klas, leerling, vak].
Casus
Je ontwikkelt een roostertool waarin je de lestijden voor 5 dagen en 4 lokalen per dag wilt vastleggen. Iedere rij staat voor een dag, iedere kolom voor een lokaal.
Eisen:
De structuur moet bestaan uit 5 rijen en 4 kolommen.
Iedere waarde moet initieel null zijn.
Je wilt opvragen of lokaal 3 op woensdag (rij 2) vrij is.