Gyakorlat – Kapcsolóutasítás implementálása
- 11 perc
Az switch utasítás egy C#-kijelölési utasítás, amely alternatívát kínál az if-elseif-else elágaztatási szerkezethez. Az switch utasítás előnyt nyújt egy if-elseif-else szerkezettel szemben, amikor egyetlen értéket értékel ki az ismert egyező értékek listájával.
Vegyük például a következő esetet:
- Egy élelmiszer-táplálkozással kapcsolatos alkalmazáson dolgozik. A kód egy része gyümölcsökkel foglalkozik.
- A kód tartalmaz egy változót, amely
fruita különböző gyümölcstípusok nevének tárolására szolgál. - A 20 gyümölcs listája, amelyekre az alkalmazás összpontosít.
- A kódját az
fruit-hoz rendelt érték alapján szeretné ágaztatni.
Ebben a forgatókönyvben egy switch utasítással létrehozhat egy külön ágat minden gyümölcstípushoz.
Hogyan működik a switch utasítás?
Az switch utasítás a lehetséges kapcsolószakaszok listájából kiválaszt egy kódszakaszt. A kiválasztott kapcsolószakaszt a rendszer az utasítás egyező kifejezésével egyező minta alapján választja ki.
Vegye figyelembe a következő kódmintát, amely bemutatja az utasítás alapstruktúráját switch.
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;
}
Az egyező kifejezés (amelyet kapcsolókifejezésnek is nevezünk) a kulcsszót követő switch érték, ebben az esetben (fruit). Minden kapcsolószakaszt egy eset minta határoz meg. Az esetminták a case kulcsszó és egy érték használatával jönnek létre. Ebben a példában az első esetminta a következő: case "apple":. A minta-összehasonlítások olyan logikai kifejezések, amelyek kiértékelése vagy true, vagy false. Az egyes kapcsoló szakaszok kis számú kódsort tartalmaznak, amelyek akkor lesznek végrehajtva, ha az esetminta megegyezik az egyezési kifejezéssel. Ebben a példában, ha a fruit változónak az 'apple' érték van hozzárendelve, az első esetminta értékelése 'igaz', mely esetben a kapcsolószakasz végrehajtásra kerül.
A kapcsolóutasításnak tartalmaznia kell legalább egy kapcsolószakaszt, de általában három vagy több kapcsolószakaszt tartalmaz.
A kapcsolót a következő esetekben érdemes használni:
- Egyetlen érték (változó vagy kifejezés) van, amelyet számos lehetséges értékkel szeretne összehasonlítani.
- A mérkőzés során legfeljebb néhány sornyi kódot kell futtatnod.
Megjegyzés:
Ez az első példa egy switch állításra szándékosan egyszerű, és a szintaxis vizsgálata rövid volt. A switch utasítás további funkcióit akkor fogja megvizsgálni, amikor az alábbi szakaszokban haladóbb forgatókönyveket tekint át.
Ideje előkészíteni a kódolási környezetet, és elkezdeni saját switch utasítások kidolgozását.
A kódolási környezet előkészítése
Ez a modul gyakorlati tevékenységeket tartalmaz, amelyek végigvezetik a bemutatókód létrehozásának és futtatásának folyamatán. Javasoljuk, hogy fejlesztési környezetként végezze el ezeket a tevékenységeket a Visual Studio Code használatával. Ha a Visual Studio Code-ot használja ezekhez a tevékenységekhez, azzal kényelmesebbé válik a kódírás és -futtatás egy olyan fejlesztői környezetben, amelyet világszerte használnak a szakemberek.
Nyissa meg a Visual Studio Code-ot.
A Visual Studio Code megnyitásához használhatja a Windows Start menüjét (vagy egy másik operációs rendszer egyenértékű erőforrását).
A Visual Studio Code File menüben válassza a Mappa megnyitása lehetőséget.
Mappa megnyitása párbeszédpanelen lépjen a Windows Desktop mappába.
Ha más mappahelyen tartja a kódprojekteket, használhatja inkább ezt a mappahelyet. Ebben a képzésben az a fontos, hogy legyen egy könnyen megtalálható és megjegyezhető hely.
A Mappa megnyitása párbeszédpanelen válassza a Mappa kiválasztása lehetőséget.
Ha megjelenik egy biztonsági párbeszédpanel, amely megkérdezi, hogy megbízik-e a szerzőkben, válassza az Igen lehetőséget.
A Visual Studio Code Terminál menüjében válassza az Új terminál lehetőséget.
Figyelje meg, hogy a Terminál panelen egy parancssor megjeleníti az aktuális mappa elérési útját. Például:
C:\Users\someuser\Desktop>Megjegyzés:
Ha nem tesztkörnyezetben vagy üzemeltetett környezetben, hanem saját PC-n dolgozik, és ebben a C#-sorozatban más Microsoft Learn-modulokat is elvégzett, előfordulhat, hogy már létrehozott egy projektmappát a kódmintákhoz. Ha ez a helyzet, átugorhatja a következő lépést, amellyel konzolalkalmazást hozhat létre a TestProject mappában.
Ha új konzolalkalmazást szeretne létrehozni egy adott mappában a Terminál parancssorában, írja be a következő parancssort:
dotnet new console -o ./CsharpProjects/TestProjectEz a .NET CLI-parancs .NET-programsablon használatával hoz létre egy új C#-konzolalkalmazás-projektet a megadott mappahelyen. A parancs létrehozza Önnek a CsharpProjects és a TestProject mappákat, és a Fájl neveként
.csproja TestProjectet használja.Ha megjelenik egy üzenet, amely közli, hogy a fájlok már léteznek, folytassa a következő lépésekkel. A meglévő projektfájlokat újra felhasználja.
Az EXPLORER nézetben bontsa ki a CsharpProjects mappát.
Ekkor megjelenik a TestProject mappa és két fájl, egy Program.cs nevű C# programfájl és egy TestProject.csproj nevű C# projektfájl.
A Visual Studio Code File menüben válassza a Mappa megnyitása lehetőséget.
A Mappa megnyitása párbeszédpanelen válassza a CsharpProjects mappát, majd válassza a Mappa kijelölése lehetőséget.
Az EXPLORER nézetben bontsa ki a TestProject mappát, majd válassza Program.cs.
Törölje a meglévő kódsorokat.
Ebben a C#-konzolprojektben kódmintákat hozhat létre, építhet és futtathat a modul során.
Zárja be a Terminál panelt.
Kapcsolóutasítás létrehozása és tesztelése
Győződjön meg arról, hogy a Visual Studio Code meg van nyitva, és a Program.cs legyen megjelenítve a Szerkesztő panelen.
Megjegyzés:
Program.cs üresnek kell lennie. Ha nem, jelölje ki és törölje az összes kódsort.
Írja be a következő kódot a Visual Studio Code Editorba:
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}");A Visual Studio Code File menüben válassza a Mentés lehetőséget.
A Program.cs fájlt a kód létrehozása vagy futtatása előtt menteni kell.
Az EXPLORER panelen nyissa meg a Terminált a TestProject mappa helyén, kattintson a jobb gombbal a TestProject elemre, majd válassza a Megnyitás az integrált terminálban lehetőséget.
Ekkor megnyílik egy terminálpanel. A terminálnak tartalmaznia kell egy parancssort, amely azt mutatja, hogy a terminál nyitva van a TestProject mappa helye előtt.
A terminál parancssorában a kód futtatásához írja be a dotnet run parancsot, majd nyomja le az Enter billentyűt.
Megjegyzés:
Ha "Nem található futtatandó projekt" üzenet jelenik meg, győződjön meg arról, hogy a Terminál parancssora megjeleníti a TestProject mappa várt helyét. Például:
C:\Users\someuser\Desktop\csharpprojects\TestProject>A következő kimenetnek kell megjelennie:
John Smith, Senior AssociateSzánjon egy percet a
switchbeírt nyilatkozat áttekintésére.Figyelje meg, hogy az
switchutasítás egyetlen kódblokkot határoz meg.Az
switchutasítás egyetlen kódblokkot határoz meg, amely tartalmazza a kapcsolószakaszok listáját. A kulcsszótól jobbraswitchegy zárójelbe zárt kapcsolókifejezés található.Figyelje meg a kódblokkon belüli kapcsolószakaszok listáját.
A
switchkódblokk tartalmazza a kapcsolószakaszok listáját, amelyek mindegyike egy vagy több kapcsolófeliratot tartalmaz. Ezenkívül minden egyes kapcsolószakasz tartalmaz egy utasításlistát, amely akkor lesz végrehajtva, ha a címke megegyezik a kapcsolóutasítás tetején definiált kapcsolókifejezéssel.A kapcsolókifejezést kiértékelik az esetcímkék alapján felülről lefelé, amíg nem találnak egy a kapcsolókifejezéssel megegyező értéket. Ha egyik címke sem egyezik, a rendszer végrehajtja az
defaulteset utasításlistáját. Ha nincs alapértelmezett beállítás, a vezérlő a kapcsolóutasítás végpontjára kerül. Minden címkének olyan értéktípust kell megadnia, amely megfelel a kapcsolókifejezésben megadott típusnak.Megjegyzés:
Az opcionális
defaultcímke a kapcsolószakaszok listájában bármilyen pozícióban megjelenhet. A fejlesztők többsége azonban úgy dönt, hogy az utolsót állítja be, mert logikusabban (logikusan) érdemes a végső lehetőségként elhelyeznidefault. Adefaultszakaszt a helyzettől függetlenül utoljára értékelik ki.A példánkban:
- a kapcsolókifejezés
(employeeLevel) - minden egyes kapcsolószakasz egyetlen kapcsolócímkét (
casevagydefault). - Az egyező kapcsolószakaszt a
case: 200határozza meg, mivelemployeeLevel = 200.
- a kapcsolókifejezés
Figyelje meg, hogy az egyes kapcsolószakaszok elválasztva lesznek a következőtől.
Csak egy kapcsoló szakasz hajtható végre. Ez azt jelenti, hogy a switch szakaszok végrehajtása nem léphet át automatikusan a következő switch szakaszra. A
breakkulcsszó az egyik módja annak, hogy lezárjon egy kapcsolószakaszt, mielőtt a következő szakaszra érne. Ha megfeledkezik abreakkulcsszóról (vagy az ahelyett használhatóreturnkulcsszóról), akkor a fordító hibaüzenetet generál.
A szintváltozó értékének módosítása a kapcsolóutasítás kiértékelésének megtekintéséhez
Az alapértelmezett eset gyakorlásához módosítsuk az alkalmazott szintjét az értékek hozzárendelésének megváltoztatásával.
A hozzárendelt érték módosításához
employeeLevelfrissítse a kódot az alábbiak szerint:int employeeLevel = 201;Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot.
Írja be
dotnet runa terminál parancssorából a kód futtatásához.Figyelje meg, hogy a kimenet megváltozott.
Most, amikor futtatja a kódot, látnia kell a használt általánosabb címet.
John Smith, AssociateMivel a
employeeLevelcímke nem egyezik egyetlen címkével sem, adefaultcímke megfelel.
Több címkét tartalmazó kapcsolószakasz módosítása
Tegyük fel, hogy vállalatunk úgy döntött, hogy minden 100. szintű alkalmazottnak a "Vezető munkatárs" címet adja - ugyanaz a cím, mint a 200-as szintű alkalmazottak. Fejlesztőként úgy dönt, hogy ezt úgy valósítja meg, hogy eltávolítja a case 100: címkéhez tartozó első kapcsolószakaszt, és ehelyett lehetővé teszi, hogy mind a case 100:, mind a case 200: címkék ugyanazt a kapcsolószakaszt hajtsák végre.
A hozzárendelt érték módosításához
employeeLevelfrissítse a kódot az alábbiak szerint:int employeeLevel = 100;Ha több címkét szeretne hozzárendelni az első kapcsolószakaszhoz, frissítse a kódot az alábbiak szerint:
case 100: case 200: title = "Senior Associate"; break;Ha végzett a módosításokkal, a módosításoknak meg kell egyeznie a következő kóddal:
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}");Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot.
Írja be
dotnet runa terminál parancssorából a kód futtatásához.A következő kimenetnek kell megjelennie:
John Smith, Senior AssociateMindkét esetcímke
100és200most a kapcsolószakasszal van párosítva, amely a címet a karakterlánc értékéreSenior Associateállítja.
Összefoglalás
Az alábbiakban a kapcsolóutasításról tanult főbb tudnivalókat ismertetjük:
- Akkor használja az
switchutasítást, ha egy érték több lehetséges egyezéssel rendelkezik, és mindegyiknek elágaztatásra van szüksége a kódlogikában. - A kódlogikát tartalmazó egyetlen kapcsolószakasz egy vagy több, a
casekulcsszó által definiált címke használatával egyeztethető. - Az opcionális
defaultkulcsszóval létrehozhat egy címkét és egy kapcsolószakaszt, amelyet akkor fog használni, ha más esetcímkék nem egyeznek.
Tudáspróba
Visszajelzés
Hasznosnak találta ezt az oldalt?
No
Segítségre van szüksége ezzel a témakörrel kapcsolatban?
Szeretné kipróbálni az Ask Learn használatát a témakör tisztázásához vagy áttekintéséhez?