Informace o správě kolekcí dat pomocí funkce List<T> v jazyce C#
Tento úvodní kurz obsahuje úvod do jazyka C# a základy třídy.
V tomto kurzu se naučíte jazyk C# interaktivně, pomocí prohlížeče napsat kód jazyka C# a podívat se na výsledky kompilace a spuštění kódu. Obsahuje řadu lekcí, které vytvářejí, upravují a prozkoumávají kolekce a pole. Pracujete primárně s List<T> třídou.
Příklad základního seznamu
Spropitné
Když blok fragmentu kódu obsahuje tlačítko Spustit, otevře se interaktivní okno nebo nahradí stávající kód v interaktivním okně. Pokud fragment kódu neobsahuje tlačítko Spustit, můžete kód zkopírovat a přidat ho do aktuálního interaktivního okna.
V interaktivním okně spusťte následující kód. Nahraďte <name>
svým jménem a vyberte Spustit:
List<string> names = ["<name>", "Ana", "Felipe"];
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Vytvořili jste seznam řetězců, přidali jste do tohoto seznamu tři názvy a vytiskli jste názvy ve všech CAPS. K procházení seznamu používáte koncepty, které jste se naučili v předchozích kurzech.
Kód pro zobrazení názvů využívá funkci interpolace řetězců . Když před string
zadáte znak $
, můžete kód jazyka C# vložit do deklarace řetězce. Skutečný řetězec nahradí kód jazyka C# hodnotou, kterou vygeneruje. V tomto příkladu nahradí {name.ToUpper()}
každé jméno převedené na velká písmena, protože jste zavolali metodu String.ToUpper.
Pokračujme v objevování.
Úprava obsahu seznamu
Kolekce, kterou jste vytvořili, používá typ List<T>. Tento typ ukládá sekvence prvků. Zadáte typ prvků mezi úhlovými závorkami.
Jedním z důležitých aspektů tohoto List<T> typu je to, že se může zvětšit nebo zmenšit, což vám umožní přidávat nebo odebírat prvky. Výsledky můžete zobrazit úpravou obsahu poté, co ho zobrazíte. Za kód, který jste už napsali, přidejte následující kód (smyčka, která vytiskne obsah):
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Na konec seznamu jste přidali další dva názvy. Zároveň jste také jeden odebrali. Výstup z tohoto bloku kódu zobrazuje počáteční obsah a pak vytiskne prázdný řádek a nový obsah.
List<T> vám také umožňuje odkazovat na jednotlivé položky podle indexu . K položkám přistupujete pomocí tokenů [
a ]
. Po tom, co jste už napsali, přidejte následující kód a zkuste ho:
Console.WriteLine($"My name is {names[0]}.");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");
Nemáte povolený přístup po konci seznamu. Můžete zkontrolovat, jak dlouho seznam používá vlastnost Count. Přidejte následující kód:
Console.WriteLine($"The list has {names.Count} people in it");
Vyberte Spustit znovu pro zobrazení výsledků. Indexy v jazyce C# začínají na 0, takže největší platný index je o jeden menší než počet položek v seznamu.
Vyhledávání a řazení seznamů
Naše ukázky používají relativně malé seznamy, ale vaše aplikace můžou často vytvářet seznamy s mnoha dalšími prvky, někdy číslování v tisících. Pokud chcete najít prvky v těchto větších kolekcích, musíte vyhledat různé položky v seznamu. Metoda IndexOf vyhledá položku a vrátí index položky. Pokud položka není v seznamu, IndexOf
vrátí -1
. Zkuste se podívat, jak to funguje. Po tom, co jste zatím napsali, přidejte následující kód:
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}");
}
Možná nevíte, jestli je položka v seznamu, takže byste měli vždy zkontrolovat index vrácený IndexOf. Pokud je -1
, položka nebyla nalezena.
Položky v seznamu lze také seřadit. Metoda Sort seřadí všechny položky v seznamu v normálním pořadí (abecedně pro řetězce). Přidejte tento kód a spusťte znovu:
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Seznamy jiných typů
Zatím jste používali typ string
v seznamech. Pojďme vytvořit List<T> pomocí jiného typu. Pojďme vytvořit sadu čísel. Odstraňte dosud zadaný kód a nahraďte ho následujícím kódem:
List<int> fibonacciNumbers = [1, 1];
Tím se vytvoří seznam celých čísel a nastaví první dvě celá čísla na hodnotu 1. Fibonacci posloupnost, je posloupností čísel a začíná dvěma jedničkami. Každé další Fibonacci číslo se najde tak, že vezme součet předchozích dvou čísel. Přidejte tento kód:
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
foreach (var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
Stiskněte pro spuštění pro zobrazení výsledků.
Výzva
Podívejte se, jestli můžete některé koncepty z této a dřívější lekce sestavit. Rozbalte to, co jste zatím vytvořili pomocí Fibonacci Numbers. Zkuste napsat kód, který vygeneruje prvních 20 čísel v sekvenci. (Jako nápovědu je 20. Fibonacciho číslo 6765.)
Přišla jste s něčím podobným?
Při každé iteraci smyčky vezmete poslední dvě celá čísla v seznamu, sečtete je a přidáte jejich sumu do seznamu. Smyčka se opakuje, dokud do seznamu nepřidáte 20 položek.
Dokončili jste interaktivní kurz se seznamem, posledním úvodem k interaktivnímu kurzu jazyka C#. Můžete navštívit web .NET ke stažení sady .NET SDK, vytvoření projektu na počítači a zachování kódování. V části Další kroky se vrátíte k těmto kurzům.
Další informace o kolekcích .NET najdete v následujících článcích:
Blahopřejeme, dokončili jste kurz seznamu. Můžete pokračovat s dalšími příručkami ve svém vlastním vývojovém prostředí.
Další informace o práci s typem List
najdete v článku základy .NET o kolekcích. Dozvíte se také o mnoha dalších typech kolekcí.