c# : Arrays en Collections

  1. Voorbereiding
  2. Wat is een Array
  3. Een Array declareren
  4. Een Array instantiëren
  5. De elementen van een Array overlopen
  6. Parameter Arrays
  7. Wat zijn Collection klassen
  8. ArrayList

Voorbereiding

  • Maak een nieuwe Visual Studio solution Array_Collection.
  • Maak in de solution Array_Collection een nieuwe WPF Application WpfArray_Collection.
  • Wat is een Array

    Arrays worden vaak ook gegevensvelden of tabellen genoemd.

    Aan een variabele kan je altijd maar één waarde tegelijk toewijzen. Een Array daarentegen kan verschillende waarden bevatten. Men spreekt daarbij van verschillende elementen, waarbij elk element een waarde heeft. De afzonderlijke elementen gedragen zich bijgevolg als variabelen. In plaats van tien variabelen kan je dus ook een Array van tien elementen gebruiken.

    De elementen van een Array behoren allen tot hetzelfde type:

    Arrays hebben nog een groot voordeel : de verschillende elementen worden doorlopend genummerd. In een lus kan je de elementen van de Array doorlopen.

    Een Array met n elementen: de elementen hebben een index 0 tot n-1

    Een Array declareren

    int[] leeftijden;
    
    Hier werd een Array-variabele met de naam leeftijd gedeclareerd, de elementen zullen van het type int zijn.
    De vierkante haken na het variabele-type geven dus aan dat de variabele een Array van dergelijke elementen zal zijn.

    Een Array instantiëren

    Een Array is een referentietype: een Arrayvariabele is dus een variabele die op de stack wordt bewaard en daar enkel het geheugenadres bevat naar het geheugenblok dat op de heap de eigenlijke elementen van de Array bevat.

    Bij instantiëren van een Array wordt aangegeven hoeveel elementen de Array zal bevatten:
    De elementen kunnen nu ook opgevuld worden, deze elementen moeten van het type zijn dat je hebt aangegeven bij declaratie.

    Declareren, de elementen afzonderlijk instantiëren

    int[] leeftijden = new int[4]; 
    //De Array met de naam leeftijden zal 4 elementen bevatten van het type int.
    //Deze elementen worden genummmerd 0 - 3
    
    leeftijden[0] = 18;
    leeftijden[1] = 63;
    leeftijden[2] = 42;
    leeftijden[3] = 7;
    
    opmerking: het aantal elementen kan ook de waarde van een int-variablele zijn:
    int aantalelementen = 4;
    int[] leeftijden = new int[aantalelementen]; 
    

    Verkorte schrijfwijze: direct instantiëren

    Als je al onmiddellijk de elementen kan opvullen, kan je in C# een verkorte schrijfwijze gebruiken door de elementen tussen accolades te noteren:
    int[] leeftijden = new int[4] {18,63,42,7};
    

    Nog korter

    Het is zelfs toegestaan om het sleutelwoord new gevolgd door het type en het aantal elementen gewoon weg te laten:
    int[] leeftijden = {18,63,42,7};
    

    Toepassing

    De elementen van een Array overlopen

    Eën van de grote voordelen van een Array is de mogelijkheid alle elementen ervan te overlopen.

    for-lus

    Wanneer je voor een for-lus kies, heb je een tellervariabele nodig die bijhoudt aan welk element je bent gekomen.
    Je dient ook te weten wanneer de lus moet stoppen, in ons geval moeten we dus weten uit hoeveel elementen de Array leeftijden bestaat.

    Array is in .Net een Klasse, deze klasse heeft tal van nuttige eigenschappen (zie later) en methoden.
    De eigenschap Length van de Array leeftijden geeft ons een int die het aantal elementen van de Array bevat:

    Het gebruik van een for-lus vereist een tellervariabele en het opgeven van een lusvoorwaarde (meestal aan de hand van de Length van de Array).

    Een for-lus geeft je natuurlijk de vrijheid om bijvoorbeeld slechts de eerste 3 elementen te overlopen, of om de elementen achterwaarts te doorlopen.

    foreach

    Het één voor één, in volgorde, overlopen van Arrayelementen kan een stuk eenvoudiger door gebruik te maken van een foreach-lus:
    foreach (int leeftijd in leeftijden)
    {
        lstResultaat.Items.Add(leeftijd);
    }
    
    Bij een foreach-lus wordt een reeks elementen één voor één overlopen, bij elke lusdoorgang wordt het respectievelijke element in een variabele gestopt die je zelf in de foreach-lus aangeeft.
    In dit voorbeeld is dit de variabele leeftijd.
    Deze variabele moet natuurlijk van hetzelfde type zijn als een element uit de Array.

    Bij elke lusdoorgang bevat de variabele leeftijd dus de volgende waarde uit de Array leeftijden. Je hebt nu geen tellervariabele meer nodig, en hoeft je ook niet te bekommeren om een lusvoorwaarde.

    De klasse Array

    System.Array is een klasse binnen .Net.
    Deze klasse bevat tal van methoden (Copy, Sort, ...) en eigenschappen (Length, ...).

    Arrays hebben echter ook een belangrijk nadeel: ze zijn fixed-length: om elementen toe te voegen of te verwijderen ben je dus verplicht een nieuwe Array te maken!

    Arrays zijn dus pas interessant als het aantal elementen in een reeks nooit of heel zelden verandert.

    Parameter Arrays

    Parameter Arrays kan je handig aanwenden wanneer je niet op voorhand weet hoeveel argumenten je bij een methode-aanroep zal meegeven.

    Met het sleutelwoord params kan je in een methode waarden in een Array ontvangen, bij aanroep van deze methode kunnen de waarden 1 voor 1 worden opgegeven:

    Wat zijn Collection klassen

    .Net bevat naast Arrays nog andere klassen om reeksen elementen te hanteren, we noemen ze de Collection klassen, je vindt ze in de namespace System.Collections
    Specifiek aan deze Collection klassen is dat ze hun elementen stockeren als van het type object.

    In deze namespace vinden we een aantal klassen terug, elk met hun specifieke troeven:


    ArrayList

    Een ArrayList heeft als specifieke troef dat je de elementen vlot kan manipuleren:

    Meer tutorials:
    leer ook: html | xhtml | css | asp | asp.net | c# | ado.net | linq | ajax | java | javascript
    Valid HTML 4.01! Valid CSS! © - Cursusweb