Cvičení – začínáme se základy polí
- 19 min
Pole lze použít k uložení více hodnot stejného typu do jedné proměnné. Hodnoty uložené v poli obecně souvisejí. Například seznam jmen studentů může být uložen v řetězcovém poli s názvem students.
Vaše práce v oddělení zabezpečení se zaměřuje na vyhledání vzoru podvodných objednávek. Chcete, aby váš kód zkontroloval minulé objednávky zákazníků a identifikoval značky spojené s podvodnými objednávkami. Vaše společnost doufá, že značky je možné použít k identifikaci potenciálních podvodných nákupních objednávek v budoucnu před jejich zpracováním. Vzhledem k tomu, že nevíte vždy předem, kolik objednávek potřebujete zkontrolovat, nemůžete vytvořit jednotlivé proměnné, které budou obsahovat každé ID objednávky. Jak můžete vytvořit datovou strukturu, která bude obsahovat více souvisejících hodnot?
V tomto cvičení použijete pole k ukládání a analýze kolekce ID objednávek.
Co je pole?
Pole je kolekce jednotlivých datových prvků, které jsou přístupné prostřednictvím jednoho názvu proměnné. Pro přístup k jednotlivým prvkům pole se používá číselný index začínající nulou. Pole umožňují vytvořit kolekci hodnot dat, které sdílejí společný účel nebo charakteristiky pod názvem jedné proměnné pro snadnější zpracování.
Deklarace polí a přístup k prvkům pole
Pole je speciální typ proměnné, která může uchovávat několik hodnot stejného datového typu. Syntaxe deklarace se u pole mírně liší, protože musíte zadat datový typ i velikost pole.
Příprava programovacího prostředí
Tento modul obsahuje aktivity, které vás provedou procesem sestavování a spouštění vzorového kódu. Doporučujeme, abyste tyto aktivity dokončili pomocí editoru Visual Studio Code jako vývojového prostředí. Používání editoru Visual Studio Code pro tyto aktivity vám pomůže stát se pohodlnějším psaním a spouštěním kódu ve vývojářském prostředí, které používají profesionálové po celém světě.
Otevřete Visual Studio Code.
K otevření editoru Visual Studio Code můžete použít windows nabídka Start (nebo ekvivalentní prostředek pro jiný operační systém).
V nabídce Soubor editoru Visual Studio Code vyberte Otevřít složku.
V dialogovém okně Otevřít složku přejděte do složky Windows Desktop.
Pokud máte jiné umístění složky, kde uchováváte projekty kódu, můžete místo toho použít toto umístění složky. Pro toto školení je důležité mít umístění, které je snadné najít a zapamatovat.
V dialogovém okně Otevřít složku vyberte Vybrat složku.
Pokud se zobrazí dialogové okno zabezpečení s dotazem, jestli autorům důvěřujete, vyberte Ano.
V nabídce Terminálu editoru Visual Studio Code vyberte Nový terminál.
Všimněte si, že příkazový řádek na panelu Terminálu zobrazuje cestu ke složce pro aktuální složku. Příklad:
C:\Users\someuser\Desktop>Poznámka:
Pokud pracujete na vlastním počítači místo v sandboxu nebo hostovaném prostředí a dokončili jste další moduly Microsoft Learn v této řadě C#, možná jste už vytvořili složku projektu pro ukázky kódu. V takovém případě můžete přeskočit další krok, který se používá k vytvoření konzolové aplikace ve složce TestProject.
Na příkazovém řádku terminálu vytvořte novou konzolovou aplikaci v zadané složce, zadejte následující řádek:
dotnet new console -o ./CsharpProjects/TestProjectTento příkaz rozhraní příkazového řádku .NET používá šablonu programu .NET k vytvoření nového projektu konzolové aplikace jazyka C# v zadaném umístění složky. Příkaz pro vás vytvoří složky CsharpProjects a TestProject a jako název souboru
.csprojpoužije TestProject.Pokud se zobrazí zpráva s oznámením, že soubory už existují, pokračujte dalším postupem. Znovu použijete existující soubory projektu.
V zobrazení PRŮZKUMNÍK rozbalte složku CsharpProjects .
Měla by se zobrazit složka TestProject a dva soubory, programový soubor jazyka C# s názvem Program.cs a soubor projektu C# s názvem TestProject.csproj.
V nabídce Soubor editoru Visual Studio Code vyberte Otevřít složku.
V dialogovém okně Otevřít složku vyberte složku CsharpProjects a pak vyberte Vybrat složku.
V zobrazení PRŮZKUMNÍK rozbalte složku TestProject a pak vyberte Program.cs.
Odstraňte existující řádky kódu.
Tento projekt konzoly C# použijete k vytváření, sestavování a spouštění ukázek kódu během tohoto modulu.
Zavřete panel Terminálu.
Deklarace nového pole
Pokud chcete deklarovat nové pole řetězců, které mohou obsahovat tři prvky, zadejte následující kód:
string[] fraudulentOrderIDs = new string[3];Prohlédněte si kód za minutu.
Operátor
newvytvoří v paměti počítače novou instanci pole, která může obsahovat tři řetězcové hodnoty. Další informace o klíčovém slověnewnajdete v modulu „Metody volání z knihovny tříd .NET pomocí jazyka C#“.Všimněte si, že první sada hranatých závorek
[]pouze kompilátoru říká, že proměnná s názvemfraudulentOrderIDsje matice, ale druhá sada hranatých závorek[3]označuje počet prvků, které pole může obsahovat.Poznámka:
Tento příklad ukazuje, jak deklarovat pole řetězců, ale můžete vytvořit pole každého datového typu, včetně primitiv jako
intabooltaké složitějších datových typů, jako jsou třídy. Pro jednoduchost se v tomto příkladu používají řetězce, abychom vás na začátku nezahltili množstvím informací.
Přiřazení hodnot k prvkům pole
V tomto okamžiku jste deklarovali pole řetězců, ale každý prvek pole je prázdný. Pro přístup k určitému prvku pole se používá číselný index začínající nulou uvnitř hranatých závorek. K prvku pole můžete přiřadit hodnotu tak = , jako by šlo o běžnou proměnnou.
Pokud chcete k poli
fraudulentOrderIDspřiřadit hodnoty ID objednávky, aktualizujte kód následujícím způsobem:string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789";Prohlédněte si kód za minutu.
Všimněte si, že pro přístup k prvkům pole používáte název pole. Každý prvek se přistupuje jednotlivě zadáním čísla indexu založeného na nule uvnitř hranatých závorek.
Vzhledem k tomu, že je pole deklarováno jako řetězec, musí být také hodnoty, které přiřadíte, řetězce. V tomto scénáři přiřazujete ID objednávek k prvkům pole.
Pokus o použití indexu, který je mimo hranice pole
Nemusí se zpočátku zdát intuitivní, ale je důležité si uvědomit, že deklarujete počet prvků v poli. Přístup k jednotlivým prvkům pole však začíná nulou. Takže pro přístup k druhé položce v poli použijete index 1.
Pro začátečníky je běžné, že pole jsou založená na nule a snaží se získat přístup k prvku pole, který neexistuje. Pokud uděláte tuto chybu, dojde k výjimce modulu runtime s informací, že jste se pokusili o přístup k prvku, který je mimo hranici pole.
Chcete-li záměrně "přerušit" vaši aplikaci, pokuste se o přístup ke čtvrtému prvku pole pomocí hodnoty indexu 3.
Do dolní části souboru kódu zadejte následující řádek kódu:
fraudulentOrderIDs[3] = "D000";Ujistěte se, že váš kód odpovídá tomuto příkladu:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; fraudulentOrderIDs[3] = "D000";V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Chcete-li v zobrazení PRŮZKUMNÍKa otevřít terminál v umístění složky TestProject, klepněte pravým tlačítkem myši na TestProject a pak vyberte Otevřít v integrovaném terminálu.
Měl by se otevřít panel terminálu a měl by obsahovat příkazový řádek zobrazující, že terminál je otevřený v umístění složky TestProject .
Na příkazovém řádku terminálu zadejte kód a
dotnet buildstiskněte Enter.Měla by se zobrazit následující zpráva:
Build succeeded. 0 Warning(s) 0 Error(s)Na příkazovém řádku terminálu zadejte
dotnet runkód a stiskněte Klávesu Enter.Při spuštění aplikace se zobrazí následující chybová zpráva modulu runtime:
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array. at Program.<Main>$(String[] args) in C:\Users\someuser\Desktop\CsharpProjects\TestProject\Program.cs:line 6Všimněte si následujících částí chyby:
- Chybová zpráva:
System.IndexOutOfRangeException: Index was outside the bounds of the array. - Umístění chyby:
Program.cs:line 6
- Chybová zpráva:
Zakomentujte řádek, který vygeneroval chybu modulu runtime.
// fraudulentOrderIDs[3] = "D000";
Viděli jste, jak přiřadit hodnotu prvku pole. Teď se podívejte, jak získat přístup k hodnotě uložené v elementu pole.
Načtení hodnot z prvků pole
Přístup k hodnotě prvku pole funguje stejně jako přiřazení hodnoty k prvku pole. Stačí zadat index prvku, jehož hodnotu chcete načíst.
Pokud chcete napsat hodnotu každého podvodného ID objednávky, aktualizujte kód následujícím způsobem:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}");V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Chcete-li v zobrazení PRŮZKUMNÍKa otevřít terminál v umístění složky TestProject, klepněte pravým tlačítkem myši na TestProject a pak vyberte Otevřít v integrovaném terminálu.
Na příkazovém řádku terminálu zadejte
dotnet runa stiskněte Klávesu Enter.Měla by se zobrazit následující zpráva:
First: A123 Second: B456 Third: C789
Změna přiřazení hodnoty pole
Prvky pole jsou stejné jako jakákoli jiná hodnota proměnné. Každému prvku pole můžete přiřadit, načíst a znovu přiřadit hodnotu.
Na konci souboru kódu znovu přiřaďte hodnotu prvního prvku pole a potom zadejte následující kód:
fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");Ujistěte se, že váš kód odpovídá následujícímu příkladu:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Chcete-li v zobrazení PRŮZKUMNÍKa otevřít terminál v umístění složky TestProject, klepněte pravým tlačítkem myši na TestProject a pak vyberte Otevřít v integrovaném terminálu.
Na příkazovém řádku terminálu zadejte
dotnet runa stiskněte Klávesu Enter.Měla by se zobrazit následující zpráva:
First: A123 Second: B456 Third: C789 Reassign First: F000
Inicializujte pole
Pole můžete inicializovat během deklarace stejně jako běžnou proměnnou.
Zakomentujte řádky, ve kterých deklarujete proměnnou
fraudulentOrderIDs.Pomocí víceřádkového komentáře (
/* ... */) můžete zakomentovat deklaracifraudulentOrderIDsa řádky použité k přiřazení hodnot k prvkům pole.Pokud chcete deklarovat pole a inicializovat hodnoty v jednom příkazu, zadejte následující kód:
string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ];Tento příklad používá syntaxi výrazu Collection , která byla zavedena v jazyce C# 12 a je podporována v .NET 10.
Může se také zobrazit starší syntaxe použitá k inicializaci pole.
string[] fraudulentOrderIDs = { "A123", "B456", "C789" };Všimněte si, že tato starší syntaxe používá složené závorky
{}k uzavření hodnot pole. Obě syntaxe jsou platné.Poznámka:
V tomto trénování se může zobrazit kombinace starší syntaxe a syntaxe výrazu Collection.
Ujistěte se, že váš kód odpovídá následujícímu příkladu:
/* string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; */ string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ]; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");Prozkoumejte příkaz deklarace za minutu.
Všimněte si, že tato syntaxe je kompaktní i snadno čitelná. Při spuštění aplikace by se nemělo měnit výstup.
V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Chcete-li v zobrazení PRŮZKUMNÍKa otevřít terminál v umístění složky TestProject, klepněte pravým tlačítkem myši na TestProject a pak vyberte Otevřít v integrovaném terminálu.
Na příkazovém řádku terminálu zadejte
dotnet runa stiskněte Klávesu Enter.Měla by se zobrazit stejná zpráva jako předtím:
First: A123 Second: B456 Third: C789 Reassign First: F000
Použití vlastnosti Délka pole
V závislosti na tom, jak je pole vytvořeno, nemusíte předem vědět, kolik prvků obsahuje. K určení velikosti pole můžete použít vlastnost Length.
Poznámka:
Vlastnost Length pole není založená na nule.
Na konci souboru kódu zadejte následující kód, který nahlásí počet podvodných objednávek:
Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");Tento kód používá vlastnost pole
Length, celé číslo, k vrácení počtu prvků vfraudulentOrderIDspoli.Ujistěte se, že váš kód odpovídá tomuto příkladu:
/* string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; */ string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ]; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");Uložte změny do souboru Program.cs a spusťte aplikaci.
Měl by se zobrazit následující výstup:
First: A123 Second: B456 Third: C789 Reassign First: F000 There are 3 fraudulent orders to process.
Rekapitulace
Tady jsou nejdůležitější věci, které je potřeba si zapamatovat při práci s poli:
- Pole je speciální proměnná, která obsahuje kolekci souvisejících datových prvků.
- Základní formát deklarace proměnné pole byste si měli zapamatovat.
- Pro přístup k jednotlivým prvkům pole kvůli nastavení nebo načtení jeho hodnoty použijte index začínající nulou v hranatých závorkách.
- Pokud se pokusíte získat přístup k indexu mimo hranici pole, získáte výjimku za běhu.
- Vlastnost
Lengthposkytuje programový způsob, jak určit počet prvků v poli.