Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Wat Zijn Lijsten? | Datastructuren & Bestandsafhandeling
C# Verder dan de Basis

bookWat Zijn Lijsten?

Prerequisites
Vereisten

Stel je voor dat we een situatie hebben waarin we de namen willen opslaan van alle studenten die een bepaalde cursus volgen. De eerste oplossing waar we aan kunnen denken is het aanmaken van een Array:

index.cs

index.cs

copy
123456
using System; class Program { string[] studentNames = new string[50]; }

Als er echter op een bepaald moment meer dan 50 studenten zijn, kunnen we hun namen niet opslaan. Evenzo, in een situatie waarin er minder dan 50 studenten zijn, zullen de ongebruikte plaatsen in de array geheugen verspillen – dit wordt vooral een probleem bij zeer grote arrays.

Hier hebben we een nieuwe structuur nodig die een variabel aantal elementen kan opslaan. Gelukkig bestaat zo'n structuur al, deze heet een List.

Lists lijken erg op Arrays, maar het aantal elementen dat in een lijst wordt opgeslagen is aanpasbaar.

Note
Opmerking

Het is mogelijk om bestaande elementen in een Array te wijzigen, maar we kunnen er geen nieuwe items aan toevoegen.

De volgende syntax wordt gebruikt om een lege lijst te declareren:

Met deze syntax kunnen we een lijst maken om de namen van studenten op te slaan:

index.cs

index.cs

copy
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

Het is belangrijk om op te merken dat het noodzakelijk is om de module Generic te importeren om gebruik te kunnen maken van Lists.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Voeg eenvoudig deze regel toe onder using System; om de vereiste module te importeren.

Add()-methode

Elementen kunnen aan een lijst worden toegevoegd met de methode Add:

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

De bovenstaande code voegt vier elementen toe aan de lijst students.

Net zoals een array van het type string alleen string-elementen kan bevatten, kan een lijst van het type string ook alleen string-elementen accepteren.

Indexering

Het eerste element is Anna en krijgt dus index 0, terwijl Laura index 1 krijgt, enzovoort. Elementen van een lijst kunnen worden benaderd via indexering, net als bij een array:

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Count() Methode

De lengte van een lijst kan worden opgehaald met behulp van het Count-attribuut:

index.cs

index.cs

copy
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Dynamische lengte

Let op dat de lengte van een lijst dynamisch (veranderlijk) is, dus deze verandert wanneer we elementen toevoegen:

index.cs

index.cs

copy
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Initialisatie

We kunnen een lijst ook initialiseren met enkele elementen met behulp van de volgende syntaxis:

List<dataType> listName = new List<dataType>{ element1, element2, … };
index.cs

index.cs

copy
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Lijsten doorlopen

Lijsten doorlopen op vergelijkbare wijze als Arrays

Met een for-lus

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

Gebruik van een foreach-lus

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }
Note
Tip:

Om de declaratiesyntaxis te verkorten, kan ook impliciete declaratie worden gebruikt. Ter herinnering: een expliciete declaratie is wanneer het gegevenstype wordt gespecificeerd tijdens de variabeledeclaratie.

index.cs

index.cs

copy
1
float number = 7.9f;

Aan de andere kant kan bij impliciete declaratie eenvoudig het sleutelwoord var worden gebruikt en leidt de compiler automatisch het gegevenstype van de variabele af op basis van de toegekende waarde:

index.cs

index.cs

copy
1
var number = 7.9f;

We kunnen ook impliciete declaratie gebruiken bij het declareren van lijsten:

index.cs

index.cs

copy
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };

1. Wat zal de uitvoer zijn van de volgende code:

2. Welke module moet worden geïmporteerd om lijsten te gebruiken?

3. Welke methode wordt gebruikt om de grootte (lengte) van een lijst op te vragen?

question mark

Wat zal de uitvoer zijn van de volgende code:

Select the correct answer

question mark

Welke module moet worden geïmporteerd om lijsten te gebruiken?

Select the correct answer

question mark

Welke methode wordt gebruikt om de grootte (lengte) van een lijst op te vragen?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 1

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 2.04

bookWat Zijn Lijsten?

Veeg om het menu te tonen

Prerequisites
Vereisten

Stel je voor dat we een situatie hebben waarin we de namen willen opslaan van alle studenten die een bepaalde cursus volgen. De eerste oplossing waar we aan kunnen denken is het aanmaken van een Array:

index.cs

index.cs

copy
123456
using System; class Program { string[] studentNames = new string[50]; }

Als er echter op een bepaald moment meer dan 50 studenten zijn, kunnen we hun namen niet opslaan. Evenzo, in een situatie waarin er minder dan 50 studenten zijn, zullen de ongebruikte plaatsen in de array geheugen verspillen – dit wordt vooral een probleem bij zeer grote arrays.

Hier hebben we een nieuwe structuur nodig die een variabel aantal elementen kan opslaan. Gelukkig bestaat zo'n structuur al, deze heet een List.

Lists lijken erg op Arrays, maar het aantal elementen dat in een lijst wordt opgeslagen is aanpasbaar.

Note
Opmerking

Het is mogelijk om bestaande elementen in een Array te wijzigen, maar we kunnen er geen nieuwe items aan toevoegen.

De volgende syntax wordt gebruikt om een lege lijst te declareren:

Met deze syntax kunnen we een lijst maken om de namen van studenten op te slaan:

index.cs

index.cs

copy
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

Het is belangrijk om op te merken dat het noodzakelijk is om de module Generic te importeren om gebruik te kunnen maken van Lists.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Voeg eenvoudig deze regel toe onder using System; om de vereiste module te importeren.

Add()-methode

Elementen kunnen aan een lijst worden toegevoegd met de methode Add:

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

De bovenstaande code voegt vier elementen toe aan de lijst students.

Net zoals een array van het type string alleen string-elementen kan bevatten, kan een lijst van het type string ook alleen string-elementen accepteren.

Indexering

Het eerste element is Anna en krijgt dus index 0, terwijl Laura index 1 krijgt, enzovoort. Elementen van een lijst kunnen worden benaderd via indexering, net als bij een array:

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Count() Methode

De lengte van een lijst kan worden opgehaald met behulp van het Count-attribuut:

index.cs

index.cs

copy
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Dynamische lengte

Let op dat de lengte van een lijst dynamisch (veranderlijk) is, dus deze verandert wanneer we elementen toevoegen:

index.cs

index.cs

copy
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Initialisatie

We kunnen een lijst ook initialiseren met enkele elementen met behulp van de volgende syntaxis:

List<dataType> listName = new List<dataType>{ element1, element2, … };
index.cs

index.cs

copy
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Lijsten doorlopen

Lijsten doorlopen op vergelijkbare wijze als Arrays

Met een for-lus

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

Gebruik van een foreach-lus

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }
Note
Tip:

Om de declaratiesyntaxis te verkorten, kan ook impliciete declaratie worden gebruikt. Ter herinnering: een expliciete declaratie is wanneer het gegevenstype wordt gespecificeerd tijdens de variabeledeclaratie.

index.cs

index.cs

copy
1
float number = 7.9f;

Aan de andere kant kan bij impliciete declaratie eenvoudig het sleutelwoord var worden gebruikt en leidt de compiler automatisch het gegevenstype van de variabele af op basis van de toegekende waarde:

index.cs

index.cs

copy
1
var number = 7.9f;

We kunnen ook impliciete declaratie gebruiken bij het declareren van lijsten:

index.cs

index.cs

copy
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };

1. Wat zal de uitvoer zijn van de volgende code:

2. Welke module moet worden geïmporteerd om lijsten te gebruiken?

3. Welke methode wordt gebruikt om de grootte (lengte) van een lijst op te vragen?

question mark

Wat zal de uitvoer zijn van de volgende code:

Select the correct answer

question mark

Welke module moet worden geïmporteerd om lijsten te gebruiken?

Select the correct answer

question mark

Welke methode wordt gebruikt om de grootte (lengte) van een lijst op te vragen?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 1
some-alt