Vad är listor?

Föreställ dig en situation där vi vill lagra namnen på alla studenter som deltar i en viss kurs. Den första lösningen vi kan komma på är att skapa en Array:
index.cs
123456using System; class Program { string[] studentNames = new string[50]; }
Om det vid något tillfälle finns fler än 50 studenter kommer vi inte kunna lagra deras namn. På samma sätt, om det finns färre än 50 studenter, kommer de tomma platserna i arrayen att vara ett slöseri med minne – detta blir ett problem särskilt i mycket stora arrayer.
Här behöver vi en ny struktur som kan lagra variabelt antal element. Lyckligtvis finns en sådan struktur redan, den kallas för en List.
Listor liknar mycket arrayer, men antalet element som lagras i en lista kan ändras.

Det är möjligt att ändra befintliga element i en array, men vi kan inte lägga till nya poster i den.
Följande är syntaxen för att deklarera en tom lista:

Med denna syntax kan vi skapa en lista för att lagra studenternas namn:
index.cs
12345678910using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }
Det är viktigt att notera att vi behöver importera modulen Generic
för att kunna använda Listor.
index.cs
1using System.Collections.Generic;
Du behöver bara lägga till denna rad under using System;
för att importera den nödvändiga modulen.
Add()-metoden
Element kan läggas till i en lista med hjälp av metoden Add
:
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 ovan lägger till fyra element i listan students
.
Precis som en array av typen string
endast kan innehålla string
-element, kan en lista av typen string
endast acceptera string
-element.
Indexering
Det första elementet är Anna
och får därför index 0
, medan Laura
får index 1
och så vidare. Element i en lista kan nås via indexering precis som i en 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
Längden på en lista kan hämtas med dess Count
-attribut:
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 längd
Observera att längden på en lista är dynamisk (föränderlig), så den ändras när vi lägger till element:
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); } }
Initiering
Vi kan också initiera en lista med några element med följande syntax:
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]); } }
Iterera genom listor
Iterering genom en lista på liknande sätt som vid iteration genom arrayer
Användning av for-loop
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]); } } }
Användning av en foreach-loop
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); } } }
För att göra deklarationssyntaxen kortare kan vi även använda implicit deklaration. För att repetera, en explicit deklaration innebär att vi anger datatypen vid variabeldeklarationen.
index.cs
1float number = 7.9f;
Å andra sidan kan vi vid implicit deklaration helt enkelt använda nyckelordet var
och kompilatorn avgör automatiskt variabelns datatyp utifrån det tilldelade värdet:
index.cs
1var number = 7.9f;
Vi kan använda implicit deklaration även när vi deklarerar listor:
index.cs
1var numbers = new List<int> { 1, 2, 3, 4, 5 };
1. Vad blir utdata från följande kod:
2. Vilket modul måste importeras för att använda listor?
3. Vilken metod används för att hämta storleken (längden) på en lista?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
What is the difference between an array and a list in C#?
Can you show an example of how to add elements to a list?
How do I access elements in a list using indexing?
Awesome!
Completion rate improved to 2.04
Vad är listor?
Svep för att visa menyn

Föreställ dig en situation där vi vill lagra namnen på alla studenter som deltar i en viss kurs. Den första lösningen vi kan komma på är att skapa en Array:
index.cs
123456using System; class Program { string[] studentNames = new string[50]; }
Om det vid något tillfälle finns fler än 50 studenter kommer vi inte kunna lagra deras namn. På samma sätt, om det finns färre än 50 studenter, kommer de tomma platserna i arrayen att vara ett slöseri med minne – detta blir ett problem särskilt i mycket stora arrayer.
Här behöver vi en ny struktur som kan lagra variabelt antal element. Lyckligtvis finns en sådan struktur redan, den kallas för en List.
Listor liknar mycket arrayer, men antalet element som lagras i en lista kan ändras.

Det är möjligt att ändra befintliga element i en array, men vi kan inte lägga till nya poster i den.
Följande är syntaxen för att deklarera en tom lista:

Med denna syntax kan vi skapa en lista för att lagra studenternas namn:
index.cs
12345678910using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }
Det är viktigt att notera att vi behöver importera modulen Generic
för att kunna använda Listor.
index.cs
1using System.Collections.Generic;
Du behöver bara lägga till denna rad under using System;
för att importera den nödvändiga modulen.
Add()-metoden
Element kan läggas till i en lista med hjälp av metoden Add
:
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 ovan lägger till fyra element i listan students
.
Precis som en array av typen string
endast kan innehålla string
-element, kan en lista av typen string
endast acceptera string
-element.
Indexering
Det första elementet är Anna
och får därför index 0
, medan Laura
får index 1
och så vidare. Element i en lista kan nås via indexering precis som i en 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
Längden på en lista kan hämtas med dess Count
-attribut:
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 längd
Observera att längden på en lista är dynamisk (föränderlig), så den ändras när vi lägger till element:
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); } }
Initiering
Vi kan också initiera en lista med några element med följande syntax:
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]); } }
Iterera genom listor
Iterering genom en lista på liknande sätt som vid iteration genom arrayer
Användning av for-loop
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]); } } }
Användning av en foreach-loop
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); } } }
För att göra deklarationssyntaxen kortare kan vi även använda implicit deklaration. För att repetera, en explicit deklaration innebär att vi anger datatypen vid variabeldeklarationen.
index.cs
1float number = 7.9f;
Å andra sidan kan vi vid implicit deklaration helt enkelt använda nyckelordet var
och kompilatorn avgör automatiskt variabelns datatyp utifrån det tilldelade värdet:
index.cs
1var number = 7.9f;
Vi kan använda implicit deklaration även när vi deklarerar listor:
index.cs
1var numbers = new List<int> { 1, 2, 3, 4, 5 };
1. Vad blir utdata från följande kod:
2. Vilket modul måste importeras för att använda listor?
3. Vilken metod används för att hämta storleken (längden) på en lista?
Tack för dina kommentarer!