Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Vad är listor? | Datastrukturer och Filhantering
C# Bortom Grunderna

bookVad är listor?

Prerequisites
Förkunskaper

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

index.cs

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

Note
Notera

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

index.cs

copy
12345678910
using 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

index.cs

copy
1
using 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

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 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

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 på en lista kan hämtas med dess 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ä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

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

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

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

Iterera genom listor

Iterering genom en lista på liknande sätt som vid iteration genom arrayer

Användning av for-loop

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

Användning av en foreach-loop

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:

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

index.cs

copy
1
float 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

index.cs

copy
1
var number = 7.9f;

Vi kan använda implicit deklaration även när vi deklarerar listor:

index.cs

index.cs

copy
1
var 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?

question mark

Vad blir utdata från följande kod:

Select the correct answer

question mark

Vilket modul måste importeras för att använda listor?

Select the correct answer

question mark

Vilken metod används för att hämta storleken (längden) på en lista?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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

bookVad är listor?

Svep för att visa menyn

Prerequisites
Förkunskaper

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

index.cs

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

Note
Notera

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

index.cs

copy
12345678910
using 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

index.cs

copy
1
using 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

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 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

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 på en lista kan hämtas med dess 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ä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

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

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

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

Iterera genom listor

Iterering genom en lista på liknande sätt som vid iteration genom arrayer

Användning av for-loop

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

Användning av en foreach-loop

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:

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

index.cs

copy
1
float 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

index.cs

copy
1
var number = 7.9f;

Vi kan använda implicit deklaration även när vi deklarerar listor:

index.cs

index.cs

copy
1
var 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?

question mark

Vad blir utdata från följande kod:

Select the correct answer

question mark

Vilket modul måste importeras för att använda listor?

Select the correct answer

question mark

Vilken metod används för att hämta storleken (längden) på en lista?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 1
some-alt