Informace o správě kolekcí dat pomocí obecného typu seznamu
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.
Tip
Pokud chcete vložit fragment kódu do detailního režimu, měli byste použít klávesovou zkratku (Ctrl + v nebo cmd + v).
Vytváření seznamů
Spusťte v interaktivním okně následující kód. Vyberte tlačítko Pro zadání detailního režimu . Potom do interaktivního okna zadejte následující blok kódu (nahraďte <name>
svým jménem) a vyberte Spustit:
var names = new List<string> { "<name>", "Ana", "Felipe" };
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Pokud to používáte ve svém prostředí, měli byste postupovat podle pokynů pro místní verzi .
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 znakem předejdete string
$
, můžete do deklarace řetězce vložit kód jazyka C#. Skutečný řetězec nahradí kód jazyka C# hodnotou, kterou vygeneruje. V tomto příkladu {name.ToUpper()}
nahradí každý název převedený na velká písmena, protože jste volali metodu String.ToUpper .
Pojďme se dál zkoumat.
Úprava obsahu seznamu
Kolekce, kterou jste vytvořili, používá tento List<T> typ. 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 může růst nebo zmenšovat, což vám umožní přidávat nebo odebírat prvky. Výsledky můžete zobrazit úpravou obsahu po zobrazení jeho obsahu. Pod kód, který jste už napsali (pod smyčku, která vytiskne obsah), přidejte následující kód:
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 ho odebrali. Výstup z tohoto bloku kódu zobrazuje počáteční obsah a pak vytiskne prázdný řádek a nový obsah.
Umožňuje List<T> odkazovat také na jednotlivé položky podle indexu . K položkám přistupujete pomocí [
tokenů a ]
tokenů. Pod kód, který jste už napsali, přidejte následující kód a vyzkoušejte 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 tuto vlastnost používá Count . Přidejte následující kód, který ho chcete vyzkoušet:
Console.WriteLine($"The list has {names.Count} people in it");
Výběrem možnosti Spustit znovu zobrazíte výsledky. 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í hodnotu -1
. Zkuste se podívat, jak to funguje. Pod to, co jste zatím napsali, přidejte následující kód:
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}");
Je možné, že nevíte, zda je položka v seznamu, takže byste měli vždy zkontrolovat index vrácený IndexOf. Pokud ano -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 string
typ v seznamech. Pojďme vytvořit List<T> jiný typ. Pojďme vytvořit sadu čísel. Odstraňte dosud zadaný kód a nahraďte ho následujícím kódem:
var fibonacciNumbers = new List<int> {1, 1};
Tím se vytvoří seznam celých čísel a nastaví první dvě celá čísla na hodnotu 1. Fibonacciho sekvence, posloupnost čísel, začíná dvěma 1s. 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);
}
Výsledky zobrazíte stisknutím klávesy Run .
Úkol
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 s Fibonacci Numbers. Zkuste kód napsat, aby se vygenerovalo prvních 20 čísel v posloupnosti. (Jako nápovědu je 20. Fibonacciho číslo 6765.)
Dokončení výzvy
Napsali jste kód podobný tomuto?
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);
}
Při každé iteraci smyčky vezmete poslední dvě celá čísla v seznamu, sečte je a přidáte ji do seznamu. Smyčka se opakuje, dokud do seznamu nepřidáte 20 položek.
Gratulujeme!
Dokončili jste interaktivní kurz seznamu. Toto je poslední úvod k interaktivnímu kurzu jazyka C#. Na webu .NET můžete stáhnout sadu .NET SDK, vytvořit projekt na svém počítači a pokračovat v 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:
Máte s touto částí nějaké problémy? Pokud ano, dejte nám prosím vědět, abychom tuto část mohli vylepšit.