Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Hvad er Lister? | Datastrukturer og Filhåndtering
C# Ud Over Det Grundlæggende

bookHvad er Lister?

Prerequisites
Forudsætninger

Forestil dig en situation, hvor vi ønsker at gemme navnene på alle de studerende, der deltager i et bestemt kursus. Den første løsning, vi kan komme på, er at oprette et Array:

index.cs

index.cs

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

Hvis der på et tidspunkt er mere end 50 studerende, vil vi ikke kunne gemme deres navne. Tilsvarende, hvis der er færre end 50 studerende, vil de tomme pladser i arrayet være spild af hukommelse – dette bliver et problem, især i meget store arrays.

Her har vi brug for en ny struktur, som kan gemme et variabelt antal elementer. Heldigvis findes en sådan struktur allerede, den kaldes en List.

Lists minder meget om Arrays, men antallet af elementer, der gemmes i en liste, kan ændres.

Note
Bemærk

Det er muligt at ændre eksisterende elementer i et Array, men vi kan ikke tilføje nye poster til det.

Følgende er syntaksen for at erklære en tom liste:

Ved at bruge denne syntaks kan vi oprette en liste til at gemme elevernes navne:

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>(); } }

Det er vigtigt at bemærke, at vi skal importere modulet Generic for at kunne bruge Lists.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Du skal blot tilføje denne linje under using System; for at importere det nødvendige modul.

Add()-metoden

Vi kan tilføje elementer til en liste ved at bruge Add-metoden:

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"); } }

Koden ovenfor vil tilføje fire elementer til students-listen.

Ligesom et array af typen string kun kan indeholde string-elementer, kan en liste af typen string kun acceptere string-elementer.

Indeksering

Det første element er Anna, derfor vil det have indekset 0, mens Laura vil have indekset 1 og så videre. Elementer i en liste kan tilgås via indeksering ligesom i et 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()-metoden

Længden af en liste kan hentes ved hjælp af dens Count-attribut:

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); } }

Dynamisk længde

Bemærk, at længden af en liste er dynamisk (ændrer sig), så den ændres, når vi tilføjer elementer:

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); } }

Initialisering

Vi kan også initialisere en liste med nogle elementer ved at bruge følgende syntaks:

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]); } }

Gennemløb af lister

Gennemløb af en liste på samme måde som ved Arrays

Brug af for-løkke

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]); } } }

Brug af en foreach-løkke

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:

For at forkorte deklarationssyntaksen kan vi også bruge implicit deklaration. Til sammenligning er en eksplicit deklaration når vi angiver datatypen under variabeldeklarationen.

index.cs

index.cs

copy
1
float number = 7.9f;

På den anden side kan vi i implicit deklaration blot bruge nøgleordet var, og compileren udleder automatisk variablens datatype ud fra den tildelte værdi:

index.cs

index.cs

copy
1
var number = 7.9f;

Vi kan også bruge implicit deklaration, når vi erklærer lister:

index.cs

index.cs

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

1. Hvad vil outputtet af følgende kode være:

2. Hvilket modul skal importeres for at bruge lister?

3. Hvilken metode bruges til at hente størrelsen (længden) af en liste?

question mark

Hvad vil outputtet af følgende kode være:

Select the correct answer

question mark

Hvilket modul skal importeres for at bruge lister?

Select the correct answer

question mark

Hvilken metode bruges til at hente størrelsen (længden) af en liste?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 2.04

bookHvad er Lister?

Stryg for at vise menuen

Prerequisites
Forudsætninger

Forestil dig en situation, hvor vi ønsker at gemme navnene på alle de studerende, der deltager i et bestemt kursus. Den første løsning, vi kan komme på, er at oprette et Array:

index.cs

index.cs

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

Hvis der på et tidspunkt er mere end 50 studerende, vil vi ikke kunne gemme deres navne. Tilsvarende, hvis der er færre end 50 studerende, vil de tomme pladser i arrayet være spild af hukommelse – dette bliver et problem, især i meget store arrays.

Her har vi brug for en ny struktur, som kan gemme et variabelt antal elementer. Heldigvis findes en sådan struktur allerede, den kaldes en List.

Lists minder meget om Arrays, men antallet af elementer, der gemmes i en liste, kan ændres.

Note
Bemærk

Det er muligt at ændre eksisterende elementer i et Array, men vi kan ikke tilføje nye poster til det.

Følgende er syntaksen for at erklære en tom liste:

Ved at bruge denne syntaks kan vi oprette en liste til at gemme elevernes navne:

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>(); } }

Det er vigtigt at bemærke, at vi skal importere modulet Generic for at kunne bruge Lists.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Du skal blot tilføje denne linje under using System; for at importere det nødvendige modul.

Add()-metoden

Vi kan tilføje elementer til en liste ved at bruge Add-metoden:

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"); } }

Koden ovenfor vil tilføje fire elementer til students-listen.

Ligesom et array af typen string kun kan indeholde string-elementer, kan en liste af typen string kun acceptere string-elementer.

Indeksering

Det første element er Anna, derfor vil det have indekset 0, mens Laura vil have indekset 1 og så videre. Elementer i en liste kan tilgås via indeksering ligesom i et 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()-metoden

Længden af en liste kan hentes ved hjælp af dens Count-attribut:

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); } }

Dynamisk længde

Bemærk, at længden af en liste er dynamisk (ændrer sig), så den ændres, når vi tilføjer elementer:

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); } }

Initialisering

Vi kan også initialisere en liste med nogle elementer ved at bruge følgende syntaks:

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]); } }

Gennemløb af lister

Gennemløb af en liste på samme måde som ved Arrays

Brug af for-løkke

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]); } } }

Brug af en foreach-løkke

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:

For at forkorte deklarationssyntaksen kan vi også bruge implicit deklaration. Til sammenligning er en eksplicit deklaration når vi angiver datatypen under variabeldeklarationen.

index.cs

index.cs

copy
1
float number = 7.9f;

På den anden side kan vi i implicit deklaration blot bruge nøgleordet var, og compileren udleder automatisk variablens datatype ud fra den tildelte værdi:

index.cs

index.cs

copy
1
var number = 7.9f;

Vi kan også bruge implicit deklaration, når vi erklærer lister:

index.cs

index.cs

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

1. Hvad vil outputtet af følgende kode være:

2. Hvilket modul skal importeres for at bruge lister?

3. Hvilken metode bruges til at hente størrelsen (længden) af en liste?

question mark

Hvad vil outputtet af følgende kode være:

Select the correct answer

question mark

Hvilket modul skal importeres for at bruge lister?

Select the correct answer

question mark

Hvilken metode bruges til at hente størrelsen (længden) af en liste?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 1
some-alt