Hva er lister?

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
123456using 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.

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
12345678910using 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
1using 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
123456789101112131415using 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
1234567891011121314151617using 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
123456789101112131415161718using 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
1234567891011121314151617181920using 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
12345678910111213141516using 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
123456789101112131415using 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
123456789101112131415using 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); } } }
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
1float 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
1var number = 7.9f;
Vi kan også bruke implisitt deklarasjon når vi deklarerer lister:
index.cs
1var 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?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
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
Hva er lister?
Sveip for å vise menyen

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
123456using 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.

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
12345678910using 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
1using 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
123456789101112131415using 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
1234567891011121314151617using 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
123456789101112131415161718using 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
1234567891011121314151617181920using 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
12345678910111213141516using 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
123456789101112131415using 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
123456789101112131415using 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); } } }
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
1float 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
1var number = 7.9f;
Vi kan også bruke implisitt deklarasjon når vi deklarerer lister:
index.cs
1var 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?
Takk for tilbakemeldingene dine!