Dowiedz się, jak zarządzać kolekcjami danych przy użyciu ogólnego typu listy
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.
Napiwek
Aby wkleić fragment kodu w trybie koncentracji uwagi, należy użyć skrótu klawiaturowego (Ctrl + v lub cmd + v).
Tworzenie list
Uruchom poniższy kod w oknie interaktywnym. Wybierz przycisk Enter focus mode (Wprowadź tryb koncentracji uwagi). Następnie wpisz następujący blok kodu w oknie interaktywnym (zastąp <name>
ciąg nazwą) i wybierz pozycję Uruchom:
var names = new List<string> { "<name>", "Ana", "Felipe" };
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Jeśli korzystasz z tego w środowisku, należy zamiast tego postępować zgodnie z instrukcjami dotyczącymi wersji lokalnej.
Utworzono listę ciągów, dodano trzy nazwy do tej listy i wydrukowano nazwy we wszystkich caps. Używasz pojęć, które zostały poznane we wcześniejszych samouczkach w celu pętli na liście.
Kod do wyświetlania nazw korzysta z funkcji interpolacji ciągów. Gdy poprzedzasz znak 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 wartość {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 List<T> typu . 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 List<T> typu jest to, że może rosnąć lub zmniejszać, umożliwiając dodawanie lub usuwanie elementów. Wyniki można wyświetlić, modyfikując zawartość po wyświetleniu jej zawartości. Dodaj następujący kod poniżej kodu, który został już napisany (poniżej pętli, która drukuje zawartość):
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Na końcu listy dodano jeszcze dwie nazwy. Usunięto go również. Dane wyjściowe z tego bloku kodu pokazują początkową zawartość, a następnie wyświetla pusty wiersz i nową zawartość.
Element List<T> umożliwia również odwołowanie się do poszczególnych elementów według indeksu . Uzyskujesz dostęp do elementów przy użyciu [
tokenów i ]
. Dodaj poniższy kod poniżej tego, co zostało już napisane 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 po końcu listy. Możesz sprawdzić, jak długo lista używa Count właściwości . Dodaj następujący kod, aby go wypróbować:
Console.WriteLine($"The list has {names.Count} people in it");
Wybierz ponownie pozycję 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 poniższy kod poniżej tego, co zostało napisane do tej pory:
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}");
Być może nie wiesz, czy element znajduje się na liście, dlatego zawsze należy sprawdzić indeks zwracany przez IndexOfelement . Jeśli jest -1
to , element nie został znaleziony.
Elementy na liście można również sortować. Metoda Sort sortuje wszystkie elementy na liście w 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żywano string
typu na listach. Utwórzmy List<T> inny typ. Utwórzmy zestaw liczb. Usuń napisany do tej pory kod i zastąp go następującym kodem:
var fibonacciNumbers = new List<int> {1, 1};
Spowoduje to utworzenie listy liczb całkowitych i ustawienie pierwszych dwóch liczb całkowitych na wartość 1. Sekwencja Fibonacciego, sekwencja liczb, zaczyna się od dwóch 1s. Każda następna liczba Fibonacciego jest znaleziona przez pobranie sumy poprzednich dwóch liczb. Dodaj ten 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 przycisk Uruchom , aby wyświetlić wyniki;
Zadanie
Sprawdź, czy możesz zebrać niektóre koncepcje z tych i wcześniejszych lekcji. Rozwiń to, co zostało utworzone do tej pory, korzystając z funkcji Fibonacci Numbers. Spróbuj napisać kod, aby wygenerować pierwsze 20 liczb w sekwencji. (Jako wskazówka liczba 20 Fibonacciego wynosi 6765).
Ukończenie wyzwania
Czy Twój pomysł był podobny do poniższego?
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);
}
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ę do momentu dodania 20 elementów do listy.
Gratulacje!
Ukończono interaktywny samouczek dotyczący listy. To ostatnie wprowadzenie do interaktywnego samouczka języka C#. Możesz odwiedzić witrynę platformy .NET, aby pobrać zestaw .NET SDK, utworzyć projekt na maszynie i kontynuować kodowanie. Sekcja "Następne kroki" umożliwia powrót do tych samouczków.
Więcej informacji na temat kolekcji platformy .NET można uzyskać w następujących artykułach:
Widzisz problem w tej sekcji? W takim przypadku prześlij opinię, abyśmy mogli udoskonalić tę sekcję.