Exerciții - Implementarea unei instrucțiuni de comutare
- 11 minute
O switch instrucțiune este o instrucțiune de selecție C# care oferă o alternativă la o if-elseif-else construcție de ramificare. Instrucțiunea switch oferă avantaje față de o if-elseif-else construcție atunci când evaluați o singură valoare în raport cu o listă de valori corespondente cunoscute.
Luați în considerare următorul scenariu:
- Lucrezi la o aplicație legată de nutriția alimentară. O secțiune a codului se ocupă cu fructe.
- Codul dvs. include o variabilă numită
fruitcare este utilizată pentru a conține numele diferitelor tipuri de fructe. - Aveți o listă cu cele 20 de fructe pe care aplicația dvs. este concentrată.
- Doriți să ramificați codul pe baza valorii atribuite lui
fruit.
În acest scenariu, puteți utiliza o switch instrucțiune pentru a crea o ramură separată pentru fiecare tip de fructe.
Cum funcționează o instrucțiune de comutare?
Instrucțiunea switch alege o secțiune de cod de executat dintr-o listă de secțiuni comutare posibile.
Secțiunea de comutare selectată este aleasă pe baza unei potriviri de model cu expresia de potrivire a instrucțiunii.
Luați în considerare următorul exemplu de cod care afișează structura de bază a instrucțiunii 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;
}
Expresia de potrivire (denumită și expresie de comutare) este valoarea care urmează switch după cuvântul cheie, în acest caz (fruit). Fiecare secțiune comutare este definită de un model de litere mari și mici. Modelele de litere sunt construite utilizând cuvântul cheie case urmat de o valoare. Primul model de caz din acest exemplu este: case "apple":. Modelele de litere sunt expresii booleene care se evaluează la una true sau falsela . Fiecare secțiune de comutare include un număr mic de linii de cod care vor fi executate dacă modelul de caz este o potrivire pentru expresia de potrivire. În acest exemplu, dacă fruit este atribuită o valoare "măr", primul model de caz se va evalua ca true și acea secțiune de comutare va fi executată.
O instrucțiune de comutare trebuie să includă cel puțin o secțiune comutare, dar va conține în mod normal trei sau mai multe secțiuni de comutare.
Comutatorul se utilizează cel mai bine atunci când:
- Aveți o singură valoare (variabilă sau expresie) pe care doriți să o potriviți cu multe valori posibile.
- Pentru orice potrivire dată, trebuie să executați cel mult două linii de cod.
Notă
Acest prim exemplu de switch instrucțiune este foarte simplu și examinarea sintaxei a fost scurtă. Veți examina caracteristici suplimentare ale declarației switch atunci când lucrați prin câteva scenarii mai complexe în secțiunile de mai jos.
Este timpul să vă pregătiți mediul de codificare și să începeți să dezvoltați propriile switch declarații.
Pregătirea mediului de codificare
Acest modul include activități practice care vă ghidează în procesul de creare și de rulare a codului demonstrativ. Vă încurajăm să finalizați aceste activități utilizând Visual Studio Code ca mediu de dezvoltare. Utilizarea Codului Visual Studio pentru aceste activități vă va ajuta să deveniți mai confortabil să scrieți și să rulați cod într-un mediu de dezvoltator utilizat de profesioniști din întreaga lume.
Deschideți Visual Studio Code.
Puteți utiliza meniul Start Windows (sau resursa echivalentă pentru un alt sistem de operare) pentru a deschide Visual Studio Code.
În meniul Fișier Visual Studio Code, selectați Deschidere folder.
În caseta de dialog Deschidere folder, navigați la folderul Desktop Windows.
Dacă aveți o altă locație de folder în care păstrați proiectele de cod, puteți utiliza acea locație de folder în schimb. Pentru această instruire, lucrul important este să aveți o locație ușor de găsit și de reținut.
În caseta de dialog Deschidere folder, selectați Selectare folder.
Dacă vedeți o casetă de dialog de securitate care vă întreabă dacă aveți încredere în autori, selectați Da.
În meniul Terminal Visual Studio Code, selectați Terminal nou .
Observați că o linie de comandă din panoul Terminal afișează calea folderului pentru folderul curent. De exemplu:
C:\Users\someuser\Desktop>Notă
Dacă lucrați pe propriul PC, nu într-un sandbox sau într-un mediu găzduit și ați finalizat alte module Microsoft Learn din această serie C#, este posibil să fi creat deja un folder de proiect pentru eșantioane de cod. În acest caz, puteți trece peste pasul următor, care este utilizat pentru a crea o aplicație consolă în folderul TestProject.
În linia de comandă Terminal, pentru a crea o aplicație consolă nouă într-un folder specificat, introduceți următoarea solicitare:
dotnet new console -o ./CsharpProjects/TestProjectAceastă comandă .NET CLI utilizează un șablon de program .NET pentru a crea un nou proiect de aplicație consolă C# în locația de folder specificată. Comanda creează folderele CsharpProjects și TestProject pentru dvs. și utilizează TestProject ca nume al fișierului
.csproj.Dacă se afișează un mesaj care vă spune că fișierele există deja, continuați cu pașii următori. Veți reutiliza fișierele de proiect existente.
În vizualizarea EXPLORER, extindeți folderul CsharpProjects .
Ar trebui să vedeți folderul TestProject și două fișiere, un fișier program C# denumit Program.cs și un fișier de proiect C# numit TestProject.csproj.
În meniul Fișier Visual Studio Code, selectați Deschidere folder.
În caseta de dialog Deschidere folder , selectați folderul CsharpProjects , apoi selectați Selectare folder.
În vizualizarea EXPLORER, extindeți folderul TestProject, apoi selectați Program.cs.
Ștergeți liniile de cod existente.
Veți utiliza acest proiect de consolă C# pentru a crea, a construi și a rula eșantioane de cod în timpul acestui modul.
Închideți panoul Terminal.
Crearea și testarea unei instrucțiuni de comutare
Asigurați-vă că aveți visual Studio Code deschis și Program.cs afișat în panoul Editor.
Notă
Program.cs ar trebui să fie goală. Dacă nu este, selectați și ștergeți toate liniile de cod.
Tastați următorul cod în Visual Studio Code Editor:
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}");În meniul Fișier Visual Studio Code, selectați Salvare.
Fișierul Program.cs trebuie salvat înainte de construirea sau rularea codului.
În panoul EXPLORER, pentru a deschide un Terminal la locația folderului TestProject, faceți clic dreapta pe TestProject, apoi selectați Deschidere în terminal integrat.
Se va deschide un panou terminal. Terminalul ar trebui să includă o linie de comandă care arată că Terminal este deschis în locația folderului TestProject.
În linia de comandă Terminal, pentru a rula codul, tastați run dotnet apoi apăsați pe Enter.
Notă
Dacă vedeți un mesaj care spune "Nu s-a găsit un proiect de rulat", asigurați-vă că linia de comandă Terminal afișează locația așteptată a folderului TestProject. De exemplu:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Ar trebui să vedeți următoarea ieșire:
John Smith, Senior AssociateCitiți un minut pentru a revizui declarația
switchpe care ați introdus-o.Observați că instrucțiunea
switchdefinește un singur bloc de cod.Instrucțiunea
switchdefinește un singur bloc de cod care include o listă de secțiuni comutare. În partea dreaptă a cuvântuluiswitchcheie se află o expresie de comutare încadrată între paranteze.Observați lista de secțiuni comutare din interiorul blocului de cod.
Blocul
switchde cod conține o listă de secțiuni comutare, fiecare dintre acestea incluzând una sau mai multe etichete de comutare. În plus, fiecare secțiune comutare include o listă de instrucțiuni care se va executa dacă eticheta este egală cu expresia de comutare definită în partea de sus a instrucțiunii switch.Expresia switch este evaluată în raport cu etichetele de litere de sus în jos până când se găsește o valoare egală cu expresia switch. Dacă niciuna dintre etichete nu este o potrivire, va fi executată lista de instrucțiuni pentru
defaultcaz. Dacă nu este inclusă nicio valoare implicită, controlul este transferat la punctul final al instrucțiunii switch. Fiecare etichetă trebuie să furnizeze un tip de valoare care corespunde tipului specificat în expresia switch.Notă
Eticheta opțională
defaultpoate apărea în orice poziție din lista de secțiuni comutare. Cu toate acestea, majoritatea dezvoltatorilor aleg să o poziționeze ultima, deoarece are sens (logic) să se poziționezedefaultca opțiune finală. Indiferent de poziție, secțiuneadefaultva fi evaluată ultima.În exemplul nostru:
- expresia switch este
(employeeLevel) - fiecare secțiune a comutatorului are o singură etichetă de comutare (
casesaudefault). - secțiunea comutator care se potrivește este definită de
case: 200, deoareceemployeeLevel = 200.
- expresia switch este
Observați că fiecare secțiune de comutare este separată de următoarea.
Se permite executarea unei singure secțiuni de comutare. Acest lucru înseamnă că executarea unei secțiuni comutare nu este permisă pentru a "cădea" la secțiunea comutare următoare. Cuvântul
breakcheie este unul dintre mai multe moduri de a încheia o secțiune comutare înainte de a ajunge la secțiunea următoare. Dacă uitațibreakcuvântul cheie (sau, opțional,returncuvântul cheie), compilatorul va genera o eroare.
Modificați valoarea variabilă de nivel pentru a vedea cum evaluează instrucțiunea switch
Pentru a exercita cazul implicit, să modificăm nivelul angajatului modificând atribuirea valorii.
Pentru a modifica valoarea atribuită lui
employeeLevel, actualizați codul după cum urmează:int employeeLevel = 201;Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul.
Introduceți
dotnet rundin linia de comandă Terminal pentru a rula codul.Observați că ieșirea s-a modificat.
Acum, când rulați codul, ar trebui să vedeți titlul mai generic utilizat.
John Smith, AssociateemployeeLevelDeoarece eticheta nu se potrivește cu nicio etichetă,defaulteticheta se potrivește.
Modificarea unei secțiuni de comutare pentru a include mai multe etichete
Să presupunem că firma noastră a decis să ofere tuturor angajaților de nivel 100 titlul "Asociat senior" -- același titlu ca și angajații de nivel 200. În calitate de dezvoltator, decideți să implementați acest lucru eliminând prima secțiune de comutare aparținând etichetei case 100:și permiteți în schimb atât etichetelor case 100: , cât și case 200: rularea aceleiași secțiuni comutare.
Pentru a modifica valoarea atribuită lui
employeeLevel, actualizați codul după cum urmează:int employeeLevel = 100;Pentru a atribui mai multe etichete primei secțiuni de comutare, actualizați codul după cum urmează:
case 100: case 200: title = "Senior Associate"; break;După ce ați terminat de efectuat modificări, modificările dvs. ar trebui să corespundă următorului cod:
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}");Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul.
Introduceți
dotnet rundin linia de comandă Terminal pentru a rula codul.Ar trebui să vedeți următoarea ieșire:
John Smith, Senior AssociateAmbele etichete de litere
100mari și200sunt acum asociate cu secțiunea switch care setează titlul la valoareaSenior Associateșirului.
Recapitulare
Iată principalele aspecte pe care le-ați învățat despre declarația de comutare:
- Utilizați instrucțiunea
switchatunci când aveți o valoare cu mai multe potriviri posibile, fiecare potrivire care necesită o ramură în logica de cod. - O singură secțiune de comutare care conține logica de cod poate fi potrivită utilizând una sau mai multe etichete definite de
casecuvântul cheie. - Utilizați cuvântul cheie opțional
defaultpentru a crea o etichetă și o secțiune de comutare care va fi utilizată atunci când nu se potrivesc alte etichete de litere mari și mici.
Verificarea cunoștințelor
Feedback
Această pagină a fost utilă?
Nu
Aveți nevoie de ajutor cu acest subiect?
Doriți să încercați să utilizați Întrebați Microsoft Learn pentru a clarifica sau primi îndrumări privind acest subiect?