Lär dig att hantera datasamlingar med hjälp av den allmänna listtypen
I den här självstudien lär du dig C# interaktivt med hjälp av webbläsaren för att skriva C#-kod och se resultatet av kompilering och körning av koden. Den innehåller en serie lektioner som skapar, ändrar och utforskar samlingar och matriser.
Dricks
Om du vill klistra in ett kodfragment i fokusläget bör du använda kortkommandot (Ctrl + v eller cmd + v).
Skapa listor
Kör följande kod i det interaktiva fönstret. Välj knappen Ange fokusläge. Skriv sedan följande kodblock i det interaktiva fönstret (ersätt <name>
med ditt namn) och välj Kör:
var names = new List<string> { "<name>", "Ana", "Felipe" };
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Om du kör detta i din miljö bör du följa anvisningarna för den lokala versionen i stället.
Du har skapat en lista med strängar, lagt till tre namn i listan och skrivit ut namnen i alla CAPS. Du använder begrepp som du har lärt dig i tidigare självstudier för att loopa igenom listan.
Koden för att visa namn använder funktionen för stränginterpolation . När du föregår en string
med $
tecknet kan du bädda in C#-kod i strängdeklarationen. Den faktiska strängen ersätter C#-koden med det värde den genererar. I det här exemplet ersätts {name.ToUpper()}
med varje namn, konverterat till versaler, eftersom du har anropat String.ToUpper metoden.
Vi fortsätter att utforska.
Ändra listinnehåll
Samlingen du skapade använder typen List<T> . Den här typen lagrar sekvenser av element. Du anger typ av element mellan vinkelparenteserna.
En viktig aspekt av den här List<T> typen är att den kan växa eller krympa, så att du kan lägga till eller ta bort element. Du kan se resultatet genom att ändra innehållet när du har visat innehållet. Lägg till följande kod under den kod som du redan har skrivit (under loopen som skriver ut innehållet):
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Du har lagt till ytterligare två namn i slutet av listan. Du har också tagit bort en. Utdata från det här kodblocket visar det första innehållet och skriver sedan ut en tom rad och det nya innehållet.
Det List<T> gör att du kan referera till enskilda objekt efter index också. Du kommer åt objekt med hjälp av [
token och ]
. Lägg till följande kod under det du redan har skrivit och prova det:
Console.WriteLine($"My name is {names[0]}.");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");
Du har inte behörighet att komma förbi slutet av listan. Du kan kontrollera hur länge listan använder Count egenskapen. Lägg till följande kod för att prova den:
Console.WriteLine($"The list has {names.Count} people in it");
Välj Kör igen för att se resultatet. I C# börjar indexen vid 0, så det största giltiga indexet är ett mindre än antalet objekt i listan.
Sök- och sorteringslistor
Våra exempel använder relativt små listor, men dina program kan ofta skapa listor med många fler element, ibland numrering i tusental. Om du vill hitta element i dessa större samlingar måste du söka i listan efter olika objekt. Metoden IndexOf söker efter ett objekt och returnerar objektets index. Om objektet inte finns i listan IndexOf
returnerar -1
. Prova det för att se hur det fungerar. Lägg till följande kod under det du har skrivit hittills:
var index = names.IndexOf("Felipe");
if (index != -1)
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
var notFound = names.IndexOf("Not Found");
Console.WriteLine($"When an item is not found, IndexOf returns {notFound}");
Du kanske inte vet om ett objekt finns i listan, så du bör alltid kontrollera indexet som returneras av IndexOf. Om det är -1
hittades inte objektet.
Objekten i listan kan också sorteras. Metoden Sort sorterar alla objekt i listan i sin normala ordning (alfabetiskt för strängar). Lägg till den här koden och kör igen:
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Listor med andra typer
Du har använt string
typen i listor hittills. Nu ska vi göra en List<T> med en annan typ. Nu ska vi skapa en uppsättning tal. Ta bort koden som du har skrivit hittills och ersätt den med följande kod:
var fibonacciNumbers = new List<int> {1, 1};
Då skapas en lista med heltal och de två första heltalen anges till värdet 1. Fibonacci-sekvensen, en sekvens med tal, börjar med två 1:a. Varje nästa Fibonacci-nummer hittas genom att ta summan av de föregående två talen. Lägg till den här koden:
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
foreach(var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
Tryck på Kör för att se resultatet.
Uppgift
Se om du kan sammanställa några av begreppen från den här och tidigare lektionerna. Expandera det du har skapat hittills med Fibonacci-nummer. Försök att skriva koden för att generera de första 20 talen i sekvensen. (Som ett tips är det 20:e Fibonacci-numret 6765.)
Utmaningen
Skrev du något som liknar det här?
var fibonacciNumbers = new List<int> {1, 1};
while (fibonacciNumbers.Count < 20)
{
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
}
foreach(var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
Med varje iteration av loopen tar du de två sista heltalen i listan, summerar dem och lägger till det värdet i listan. Loopen upprepas tills du har lagt till 20 objekt i listan.
Grattis!
Du har slutfört den interaktiva självstudien för listan. Det är den sista introduktionen till interaktiva C#-självstudier. Du kan besöka .NET-webbplatsen för att ladda ned .NET SDK, skapa ett projekt på datorn och fortsätta koda. Avsnittet "Nästa steg" tar dig tillbaka till de här självstudierna.
Du kan läsa mer om .NET-samlingar i följande artiklar:
Har du ett problem med det här avsnittet? Ge oss då feedback så att vi kan förbättra avsnittet.