Cvičení – implementace příkazu switch
- 11 min
Příkaz switch je příkaz výběru jazyka C#, který poskytuje alternativu k konstruktoru if-elseif-else větvení. Příkaz switch poskytuje výhody oproti konstruktoru if-elseif-else při vyhodnocování jedné hodnoty v seznamu známých shodných hodnot.
Představte si následující scénář:
- Pracujete na aplikaci související s výživou potravin. Část kódu se zabývá ovocem.
- Kód obsahuje proměnnou s názvem
fruit, která se používá k uložení názvu různých typů ovoce. - Máte seznam 20 ovoce, na které se vaše aplikace zaměřuje.
- Chcete kód rozvětvovat na základě hodnoty přiřazené
fruit.
V tomto scénáři můžete pomocí switch příkazu vytvořit samostatnou větev pro každý typ ovoce.
Jak funguje příkaz switch?
Příkaz switch zvolí jednu část kódu k provedení z možných sekcí přepínače. Vybraný oddíl switch se vybere na základě shody vzoru s výrazem shody příkazu.
Představte si následující vzorový kód, který ukazuje základní strukturu switch příkazu:
switch (fruit)
{
case "apple":
Console.WriteLine($"App will display information for apple.");
break;
case "banana":
Console.WriteLine($"App will display information for banana.");
break;
case "cherry":
Console.WriteLine($"App will display information for cherry.");
break;
}
Výraz shody (který může být také označován jako výraz switch) je hodnota za klíčovým slovem switch, v tomto případě (fruit). Každý oddíl přepínače je definován vzorem případu. Vzory případů se vytvářejí pomocí klíčového slova case následovaného hodnotou. První vzor případu v tomto příkladu je: case "apple":. Vzory případů jsou logické výrazy, které se vyhodnocují jako buď true nebo false. Každý oddíl přepínače obsahuje malý počet řádků kódu, které se spustí, pokud vzor případu odpovídá výrazu shody. Pokud je v tomto příkladu fruit přiřazena hodnota "apple", první vzor případu se vyhodnotí jako true a tento oddíl přepínače se spustí.
Příkaz switch musí obsahovat alespoň jeden oddíl přepínače, ale obvykle bude obsahovat tři nebo více oddílů přepínače.
Přepínač se nejlépe používá v následujících případech:
- Máte jednu hodnotu (proměnnou nebo výraz), kterou chcete shodovat s mnoha možnými hodnotami.
- Pro každou danou shodu musíte provést maximálně několik řádků kódu.
Poznámka:
Tento první příklad switch příkazu je účelově jednoduchý a vaše zkoumání syntaxe bylo stručné. Při práci s pokročilejšími scénáři v následujících částech prozkoumáte další funkce switch příkazu.
Je čas připravit programovací prostředí a začít vyvíjet vlastní switch příkazy.
Příprava programovacího prostředí
Tento modul obsahuje praktické aktivity, které vás provedou procesem sestavování a spouštění ukázkové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 nabídku Start systému Windows (nebo odpovídající 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. Napří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.
Vytvoření a otestování příkazu switch
Ujistěte se, že máte visual Studio Code otevřený a Program.cs zobrazený na panelu Editor.
Poznámka:
Program.cs by měl být prázdný. Pokud není, vyberte a odstraňte všechny řádky kódu.
Do editoru visual studio Code zadejte následující kód:
int employeeLevel = 200; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: title = "Junior Associate"; break; case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Soubor Program.cs musí být uložen před sestavením nebo spuštěním kódu.
Na panelu PRŮZKUMNÍK otevřete terminál v umístění složky TestProject, klikněte pravým tlačítkem myši na TestProject a pak vyberte Otevřít v integrovaném terminálu.
Otevře se panel terminálu. Terminál by měl obsahovat příkazový řádek, který ukazuje, že terminál je otevřený v umístění složky TestProject.
Na příkazovém řádku terminálu spusťte kód zadáním příkazu dotnet run a stiskněte Enter.
Poznámka:
Pokud se zobrazí zpráva "Nepodařilo se najít projekt ke spuštění", ujistěte se, že příkazový řádek terminálu zobrazí očekávané umístění složky TestProject. Příklad:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Měl by se zobrazit následující výstup:
John Smith, Senior AssociateVěnujte chvíli kontrole
switchpříkazu, který jste zadali.Všimněte si, že příkaz
switchdefinuje jeden blok kódu.Příkaz
switchdefinuje jeden blok kódu, který obsahuje seznam oddílů přepínače. Napravo od klíčovéhoswitchslova je výraz přepínače, který je uzavřen v závorkách.Všimněte si seznamu oddílů přepínačů uvnitř bloku kódu.
Blok
switchkódu obsahuje seznam oddílů přepínače, z nichž každý obsahuje jeden nebo více popisků přepínačů. Každý oddíl přepínače navíc obsahuje seznam příkazů, který se spustí, pokud se popisek rovná výrazu switch definovanému v horní části příkazu switch.Výraz switch se vyhodnotí podle případových štítků odshora dolů, dokud se nenajde hodnota rovná výrazu switch. Pokud se žádný ze štítků neshoduje, seznam příkazů pro případ
defaultse spustí. Pokud není zahrnuta žádná výchozí hodnota, ovládací prvek se přenese do koncového bodu příkazu switch. Každý popisek musí obsahovat typ hodnoty, který odpovídá typu zadanému ve výrazu switch.Poznámka:
Volitelný
defaultpopisek se může zobrazit na libovolném místě v seznamu částí přepínače. Většina vývojářů se ale rozhodne, že ji umístí jako poslední, protože dává smysl (logicky) umístitdefaultjako poslední možnost. Oddíldefaultse vyhodnotí jako poslední, bez ohledu na pozici.V našem příkladu:
- výraz switch je
(employeeLevel) - každá sekce přepínače má jediný popisek přepínače (
casenebodefault). - odpovídající část přepínače je definována ,
case: 200protožeemployeeLevel = 200.
- výraz switch je
Všimněte si, že každý oddíl přepínače je oddělený od následujícího.
Je povoleno spustit pouze jednu sekci přepínače. To znamená, že spuštění oddílu přepínače není povoleno "projít" do dalšího oddílu přepínače. Klíčové
breakslovo je jedním z několika způsobů, jak ukončit sekci switch, než se přejde k další sekci. Pokud klíčové slovobreak(nebo volitelně klíčové slovoreturn) zapomenete, vygeneruje kompilátor chybu.
Změňte hodnotu proměnné 'level', abyste viděli, jak příkaz switch tuto hodnotu vyhodnotí.
Pro cvičení výchozího případu změníme úroveň zaměstnance úpravou přiřazení hodnoty.
Chcete-li upravit hodnotu přiřazenou
employeeLevel, aktualizujte kód následujícím způsobem:int employeeLevel = 201;Uložte soubor kódu a pak pomocí editoru Visual Studio Code spusťte svůj kód.
Zadáním
dotnet runz příkazového řádku terminálu spusťte kód.Všimněte si, že se výstup změnil.
Když teď spustíte kód, měli byste vidět obecnější název.
John Smith, AssociateProtože se
employeeLevelneshoduje s žádnými štítky, je shodný sdefault.
Úprava sekce přepínače tak, aby obsahovala více popisků
Předpokládejme, že se naše společnost rozhodla dát všem zaměstnancům úrovně 100 titul "Senior Associate" – stejný titul jako zaměstnanci úrovně 200. Jako vývojář se rozhodnete implementovat tento postup tím, že odstraníte první oddíl přepínače patřící k popisku case 100:, a místo toho umožníte, aby jak popisky case 100:, tak case 200: provedly stejný oddíl přepínače.
Chcete-li upravit hodnotu přiřazenou
employeeLevel, aktualizujte kód následujícím způsobem:int employeeLevel = 100;Pokud chcete přiřadit více popisků k první části přepínače, aktualizujte kód následujícím způsobem:
case 100: case 200: title = "Senior Associate"; break;Po dokončení změn by vaše úpravy měly odpovídat následujícímu kódu:
int employeeLevel = 100; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");Uložte soubor kódu a pak pomocí editoru Visual Studio Code spusťte svůj kód.
Zadáním
dotnet runz příkazového řádku terminálu spusťte kód.Měl by se zobrazit následující výstup:
John Smith, Senior AssociateOba labely
100a200jsou nyní spojeny s částí přepínače, která nastaví název na řetězcovou hodnotuSenior Associate.
Rekapitulace
Tady jsou hlavní poznatky, které jste se dozvěděli o příkazu switch:
- Použijte příkaz
switch, pokud máte jednu hodnotu s mnoha možnými shodami, přičemž každá shoda vyžaduje samostatnou větev v logice vašeho kódu. - Jeden oddíl přepínače obsahující logiku kódu lze spárovat pomocí jednoho nebo více popisků definovaných klíčovým slovem
case. - Pomocí volitelného klíčového slova
defaultvytvořte štítek a sekci přepínače, které budou použity, pokud nebudou odpovídat žádné jiné případové štítky.