Vezérlési szerkezeteink közé tartozik az if, else-if, else ágak mellett a különálló switch-case szerkezet. Switch case-t akkor érdemes használni, hogyha egyetlen változó nagyobb mennyiségű, különböző eseteire szeretnénk másképpen, vagy akár több értékre is azonosan reagálni, elegáns módon.
string jogositvany = "A";
switch (jogositvany)
{
case "A":
case "A1":
case "A2":
Console.WriteLine("Motor");
break;
case "B":
Console.WriteLine("Személygépjármű");
break;
case "C":
Console.WriteLine("Teherautó");
break;
case "D":
Console.WriteLine("Busz");
break;
default:
Console.WriteLine("Nem található!");
break;
}
A switch-case szerkezet fő kulcsszavai a switch, case, break, illetve a default. A switch (változónév) kulcsszó után a vizsgált változó nevét adjuk majd, utána a case-ekben pedig azokat az értékeket, melyekkel ha egyenlő a változónk, a switch-case szerkezet azon ága fog megfutni a break kulcsszóig, majd kilép a szerkezetből. Ha egyik esettel (case) sem egyenlő a változónk, akkor a default ág fog megfutni a szerkezetben.
Az említett példában úgy olvasandó a szöveg, hogy „abban az esetben, ha a jogosítvány változónk A, A1 vagy A2 értéket vesz fel, kiírjuk hogy Motor. B értékkel való egyezés esetén Személygépjármű-t iratunk ki, C esetén Teherautó-t illetve D esetén pedig Busz-t. Minden más esetben pedig (default) Nem található! lesz kiiratva.” .
A Visual Studio-ban beépített snippet-je van a switch kulcsszónak, illetve ha a változó helyére enum változóra hivatkozunk, le generáltathatjuk az enum összes lehetséges értékét a switch-case szerkezetünkhöz.
Alapvetően a switch-case helyettesíthető hosszú if, else-if, else lánccal, azonban a jobb olvashatóság érdekében érdemes lehet megfontolni a switch-case használatát, ha a változónk meghatározott értékeket vehet fel. Általánosságban kijelenthető a switch-case-ről, hogy gyorsabb, mert a fordító a háttérben ugró táblát alkot a fordítás idejében.
Hogyha a megadott változónk értéktartománya túl széleskörű, van lehetőségünk leszűkíteni azt a különböző case-eknél a when kulcsszóval. Erre példát a Microsoft dokumentumában találhatunk.
Kapcsolódó bejegyzések
Források:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/switch
https://www.dotnetperls.com/if-switch-performance