Udostępnij za pomocą


Samouczek: dowiedz się, jak zarządzać zbieraniami danych przy użyciu listy<T> w języku C#

Ten samouczek wprowadzający zawiera wprowadzenie do języka C# oraz podstawy System.Collections.Generic.List<T> klasy.

W tym samouczku przedstawiono język C#. Napiszesz kod w języku C# i zobaczysz wyniki kompilowania i uruchamiania tego kodu. Zawiera szereg lekcji, które tworzą, modyfikują i analizują kolekcje. Pracujesz głównie z klasą List<T>.

W tym samouczku nauczysz się następujących rzeczy:

  • Uruchom usługę GitHub Codespace przy użyciu środowiska programistycznego w języku C#.
  • Utwórz różne typy list.
  • Modyfikowanie zawartości listy.
  • Wyszukaj i sortuj listy.

Wymagania wstępne

Musisz mieć jedną z następujących opcji:

Podstawowy przykład listy

Aby uruchomić GitHub Codespace ze środowiskiem samouczkowym, otwórz okno przeglądarki w repozytorium Codespace samouczka. Wybierz zielony przycisk Kod i kartę Codespaces . Następnie wybierz znak, + aby utworzyć nową przestrzeń Codespace przy użyciu tego środowiska. Jeśli wykonano inne samouczki z tej serii, możesz otworzyć tę przestrzeń kodu zamiast tworzyć nowe.

  1. Podczas ładowania przestrzeni kodu utwórz nowy plik w folderze tutorials o nazwie lists.cs.

  2. Otwórz nowy plik.

  3. Wpisz lub skopiuj następujący kod do lists.cs:

    List<string> names = ["<name>", "Ana", "Felipe"];
    foreach (var name in names)
    {
        Console.WriteLine($"Hello {name.ToUpper()}!");
    }
    
  4. Uruchom kod, wpisując następujące polecenie w oknie terminalu:

    cd tutorials
    dotnet lists.cs
    

Utworzono listę stringów, dodano do tej listy trzy nazwy i wydrukowano nazwy WIELKIMI 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.

  1. 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ść.

  2. 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ługa jest lista, używając właściwości Count.

  3. Dodaj następujący kod:

    Console.WriteLine($"The list has {names.Count} people in it");
    

    Wpisz dotnet lists.cs ponownie w oknie terminalu, 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.

Aby uzyskać więcej informacji na temat indeksów, zobacz artykuł Eksplorowanie indeksów i zakresów .

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.

  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.

  2. Możesz również sortować elementy na liście. 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 na listach. Utwórzmy List<T> przy użyciu innego typu. Utwórzmy zestaw liczb.

  1. Dodaj następujący kod na końcu pliku źródłowego:

    List<int> fibonacciNumbers = [1, 1];
    

    Ten kod tworzy listę liczb całkowitych i ustawia dwie pierwsze liczby całkowite 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.

  2. 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);
    }
    
  3. Wpisz dotnet lists.cs w oknie terminalu, 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?

List<int> fibonacciNumbers = [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 należy wziąć dwie ostatnie liczby całkowite na liście, zsumować je i dodać tę wartość do listy. Pętla powtarza się, aż dodasz 20 elementów do listy.

Ukończono samouczek dotyczący listy. Więcej informacji na temat kolekcji .NET znajdziesz w następujących artykułach:

Oczyszczanie zasobów

Usługa GitHub automatycznie usuwa środowisko Codespace po upływie 30 dni braku aktywności. Jeśli planujesz zapoznać się z więcej samouczków w tej serii, możesz pozostawić aprowizowaną usługę Codespace. Jeśli jesteś gotów, aby odwiedzić witrynę .NET i pobrać .NET SDK, możesz usunąć swoje środowisko Codespace. Aby usunąć swój Codespace, otwórz okno przeglądarki i przejdź do Twoich Codespaces. Powinna wyświetlić się lista Twoich codespaces w oknie. Wybierz trzy kropki (...) przy wpisie dotyczącym obszaru codespace samouczka learn i wybierz Usuń.

Następny krok