Dowiedz się, jak zarządzać kolekcjami danych przy użyciu Listy<T> w C#
Ten samouczek wprowadzający zawiera wprowadzenie do języka C# oraz podstawy klasy.
Ten samouczek uczy języka C# interaktywnie, używając przeglądarki do pisania kodu w języku C# i wyświetlania wyników kompilowania i uruchamiania kodu. Zawiera szereg lekcji, które tworzą, modyfikują i eksplorują kolekcje i tablice. Pracujesz głównie z klasą List<T>.
Podstawowy przykład listy
Napiwek
Gdy blok fragmentu kodu zawiera przycisk "Uruchom", ten przycisk otwiera okno interakcyjne lub zastępuje istniejący kod w oknie interaktywnym. Gdy fragment kodu nie zawiera przycisku "Uruchom", możesz skopiować kod i dodać go do bieżącego okna interaktywnego.
Uruchom następujący kod w oknie interaktywnym. Zastąp <name>
nazwą i wybierz pozycję Uruchom:
List<string> names = ["<name>", "Ana", "Felipe"];
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Utworzyliśmy listę ciągów znaków, dodaliśmy trzy nazwy do tej listy i wydrukowaliśmy nazwy DUŻYMI LITERAMI. Używasz pojęć poznanych we wcześniejszych samouczkach, aby iterować przez listę.
Kod do wyświetlania nazw korzysta z funkcji interpolacji ciągów . Gdy poprzedzasz string
znakiem $
, możesz osadzić kod języka C# w deklaracji ciągu. Rzeczywisty ciąg zastępuje kod języka C# wartością, którą generuje. W tym przykładzie zastępuje {name.ToUpper()}
każdą nazwą, przekonwertowaną na wielkie litery, ponieważ wywołano metodę String.ToUpper.
Kontynuujmy eksplorowanie.
Modyfikowanie zawartości listy
Utworzona kolekcja używa typu List<T>. Ten typ przechowuje sekwencje elementów. Należy określić typ elementów między nawiasami kątowymi.
Jednym z ważnych aspektów tego typu List<T> jest to, że może on rosnąć lub zmniejszać, umożliwiając dodawanie lub usuwanie elementów. Możesz zobaczyć wyniki po zmodyfikowaniu zawartości po jej wyświetleniu. Dodaj następujący kod po kodzie, który został już napisany (pętla wyświetlająca zawartość):
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Dodano jeszcze dwie nazwy na końcu listy. Ty również usunąłeś jeden. Dane wyjściowe z tego bloku kodu pokazują początkową zawartość, a następnie wyświetla pusty wiersz i nową zawartość.
List<T> umożliwia odwołanie się również do poszczególnych elementów według indeksu . Uzyskujesz dostęp do elementów przy użyciu tokenów [
i ]
. Dodaj następujący kod po tym, co już napisałeś, i wypróbuj go:
Console.WriteLine($"My name is {names[0]}.");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");
Nie możesz uzyskać dostępu do części poza końcem listy. Możesz sprawdzić, jak długo lista używa właściwości Count. Dodaj następujący kod:
Console.WriteLine($"The list has {names.Count} people in it");
Wybierz ponownie Uruchom, aby wyświetlić wyniki. W języku C#indeksy zaczynają się od 0, więc największy prawidłowy indeks jest mniejszy niż liczba elementów na liście.
Wyszukiwanie i sortowanie list
Nasze przykłady używają stosunkowo małych list, ale aplikacje mogą często tworzyć listy z wieloma większą liczbą elementów, czasami numerując je w tysiącach. Aby znaleźć elementy w tych większych kolekcjach, należy wyszukać listę różnych elementów. Metoda IndexOf wyszukuje element i zwraca indeks elementu. Jeśli element nie znajduje się na liście, IndexOf
zwraca wartość -1
. Spróbuj zobaczyć, jak to działa. Dodaj następujący kod po tym, co napisałeś do tej pory:
var index = names.IndexOf("Felipe");
if (index == -1)
{
Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
index = names.IndexOf("Not Found");
if (index == -1)
{
Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
Być może nie wiesz, czy element znajduje się na liście, dlatego zawsze należy sprawdzić indeks zwrócony przez IndexOf. Jeśli to -1
, element nie został znaleziony.
Elementy na liście można również sortować. Metoda Sort sortuje wszystkie elementy na liście w ich normalnej kolejności (alfabetycznie dla ciągów). Dodaj ten kod i uruchom go ponownie:
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Listy innych typów
Do tej pory używałeś typu string
w listach. Utwórzmy List<T> przy użyciu innego typu. Utwórzmy zestaw liczb. Usuń napisany do tej pory kod i zastąp go następującym kodem:
List<int> fibonacciNumbers = [1, 1];
Spowoduje to utworzenie listy liczb całkowitych i ustawienie pierwszych dwóch liczb całkowitych na wartość 1. Sekwencja Fibonacciego, sekwencja liczb, rozpoczyna się od dwóch 1. Każda następna liczba Fibonacciego jest znaleziona przez pobranie sumy poprzednich dwóch liczb. Dodaj następujący kod:
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
foreach (var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
Naciśnij Uruchom, aby wyświetlić wyniki;
Wyzwanie
Sprawdź, czy możesz zebrać niektóre koncepcje z tych i wcześniejszych lekcji. Rozwijaj to, co tworzysz do tej pory, korzystając z liczb Fibonacciego. Spróbuj napisać kod, aby wygenerować pierwsze 20 liczb w sekwencji. (Jako wskazówka liczba 20 Fibonacciego wynosi 6765).
Czy wymyśliłeś coś takiego?
W przypadku każdej iteracji pętli przyjmujesz dwie ostatnie liczby całkowite na liście, sumując je i dodając tę wartość do listy. Pętla powtarza się, aż dodasz 20 elementów do listy.
Ukończono samouczek interaktywny z listą— końcowe wprowadzenie do interaktywnego samouczka języka C#. Możesz odwiedzić witrynę platformy .NET, aby pobrać zestaw SDK platformy .NET, utworzyć projekt na maszynie i kontynuować kodowanie. Sekcja "Następne kroki" zawiera powrót do tych samouczków.
Więcej informacji na temat kolekcji .NET znajdziesz w następujących artykułach:
Gratulacje, ukończyłeś samouczek dotyczący listy. Możesz kontynuować pracę z więcej samouczków we własnym środowisku projektowym.
Więcej informacji na temat pracy z typem List
można dowiedzieć się w artykule Podstawy platformy .NET na temat kolekcji . Poznasz również wiele innych typów kolekcji.