Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Hva er lister? | Datastrukturer og Filhåndtering
C# Utover Det Grunnleggende

bookHva er lister?

Prerequisites
Forutsetninger

Tenk deg at vi har en situasjon hvor vi ønsker å lagre navnene på alle studentene som tar et bestemt kurs. Den første løsningen vi kan komme på er å opprette et Array:

index.cs

index.cs

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

Men hvis det på et tidspunkt er mer enn 50 studenter, vil vi ikke kunne lagre navnene deres. På samme måte, i en situasjon hvor det er færre enn 50 studenter, vil de ubrukte plassene i arrayet være sløsing med minne – dette blir et problem spesielt i store arrayer.

Her trenger vi en ny struktur som kan lagre et variabelt antall elementer. Heldigvis finnes det allerede en slik struktur, den kalles en List.

Lister ligner veldig på arrayer, men antallet elementer som lagres i en liste kan endres.

Note
Merk

Det er mulig å endre eksisterende elementer i et array, men vi kan ikke legge til nye oppføringer i det.

Følgende er syntaksen for å deklarere en tom liste:

Med denne syntaksen kan vi opprette en liste for å lagre studentenes navn:

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 viktig å merke seg at vi må importere Generic-modulen for å kunne bruke lister.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Du trenger bare å legge til denne linjen under using System; for å importere det nødvendige modulen.

Add()-metoden

Vi kan legge til elementer i en liste ved å bruke 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 legge til fire elementer i students-listen.

Akkurat som et array av typen string kun kan inneholde string-elementer, kan en liste av typen string kun akseptere string-elementer.

Indeksering

Det første elementet er Anna, derfor vil det ha indeksen 0, mens Laura vil ha indeksen 1 og så videre. Elementer i en liste kan nås via indeksering på samme måte som 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

Vi kan hente lengden på en liste ved å bruke dens Count-attributt:

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 lengde

Merk at lengden på en liste er dynamisk (endringsbar), så den endres etter hvert som vi legger til 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 noen elementer ved å bruke 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]); } }

Iterasjon gjennom lister

Iterasjon gjennom en liste på samme måte som vi ville gjort med arrayer

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

Bruk av 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
Tips:

For å gjøre deklarasjonssyntaksen kortere kan vi også bruke implisitt deklarasjon. Til sammenligning er en eksplisitt deklarasjon når vi spesifiserer datatypen under variabeldeklarasjonen.

index.cs

index.cs

copy
1
float number = 7.9f;

På den annen side kan vi i implisitt deklarasjon ganske enkelt bruke var-nøkkelordet, og kompilatoren utleder automatisk datatypen til variabelen basert på den tildelte verdien:

index.cs

index.cs

copy
1
var number = 7.9f;

Vi kan også bruke implisitt deklarasjon når vi deklarerer lister:

index.cs

index.cs

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

1. Hva vil være utdataene fra følgende kode:

2. Hvilket modul må importeres for å bruke lister?

3. Hvilken metode brukes for å hente størrelsen (lengden) på en liste?

question mark

Hva vil være utdataene fra følgende kode:

Select the correct answer

question mark

Hvilket modul må importeres for å bruke lister?

Select the correct answer

question mark

Hvilken metode brukes for å hente størrelsen (lengden) på en liste?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 2.04

bookHva er lister?

Sveip for å vise menyen

Prerequisites
Forutsetninger

Tenk deg at vi har en situasjon hvor vi ønsker å lagre navnene på alle studentene som tar et bestemt kurs. Den første løsningen vi kan komme på er å opprette et Array:

index.cs

index.cs

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

Men hvis det på et tidspunkt er mer enn 50 studenter, vil vi ikke kunne lagre navnene deres. På samme måte, i en situasjon hvor det er færre enn 50 studenter, vil de ubrukte plassene i arrayet være sløsing med minne – dette blir et problem spesielt i store arrayer.

Her trenger vi en ny struktur som kan lagre et variabelt antall elementer. Heldigvis finnes det allerede en slik struktur, den kalles en List.

Lister ligner veldig på arrayer, men antallet elementer som lagres i en liste kan endres.

Note
Merk

Det er mulig å endre eksisterende elementer i et array, men vi kan ikke legge til nye oppføringer i det.

Følgende er syntaksen for å deklarere en tom liste:

Med denne syntaksen kan vi opprette en liste for å lagre studentenes navn:

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 viktig å merke seg at vi må importere Generic-modulen for å kunne bruke lister.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Du trenger bare å legge til denne linjen under using System; for å importere det nødvendige modulen.

Add()-metoden

Vi kan legge til elementer i en liste ved å bruke 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 legge til fire elementer i students-listen.

Akkurat som et array av typen string kun kan inneholde string-elementer, kan en liste av typen string kun akseptere string-elementer.

Indeksering

Det første elementet er Anna, derfor vil det ha indeksen 0, mens Laura vil ha indeksen 1 og så videre. Elementer i en liste kan nås via indeksering på samme måte som 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

Vi kan hente lengden på en liste ved å bruke dens Count-attributt:

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 lengde

Merk at lengden på en liste er dynamisk (endringsbar), så den endres etter hvert som vi legger til 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 noen elementer ved å bruke 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]); } }

Iterasjon gjennom lister

Iterasjon gjennom en liste på samme måte som vi ville gjort med arrayer

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

Bruk av 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
Tips:

For å gjøre deklarasjonssyntaksen kortere kan vi også bruke implisitt deklarasjon. Til sammenligning er en eksplisitt deklarasjon når vi spesifiserer datatypen under variabeldeklarasjonen.

index.cs

index.cs

copy
1
float number = 7.9f;

På den annen side kan vi i implisitt deklarasjon ganske enkelt bruke var-nøkkelordet, og kompilatoren utleder automatisk datatypen til variabelen basert på den tildelte verdien:

index.cs

index.cs

copy
1
var number = 7.9f;

Vi kan også bruke implisitt deklarasjon når vi deklarerer lister:

index.cs

index.cs

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

1. Hva vil være utdataene fra følgende kode:

2. Hvilket modul må importeres for å bruke lister?

3. Hvilken metode brukes for å hente størrelsen (lengden) på en liste?

question mark

Hva vil være utdataene fra følgende kode:

Select the correct answer

question mark

Hvilket modul må importeres for å bruke lister?

Select the correct answer

question mark

Hvilken metode brukes for å hente størrelsen (lengden) på en liste?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 1
some-alt