Tässä artikkelissa opitaan C #: n kytkinlausekkeesta ja niiden käytöstä esimerkkien kanssa.
Switch-käskyä voidaan käyttää korvaamaan if … else if-lause C #: ssä. Vaihdon käytön etu, jos… muuten, jos lause on koodit, näyttää paljon puhtaammalta ja luettavammalta kytkimellä.
Kytkinlausekkeen syntaksi on:
kytkin (muuttuja / lauseke) (tapausarvo1: // Lausekkeet suoritetaan, jos lauseke (tai muuttuja) = arvo1 rikkoo; tapausarvo2: // Lausekkeet suoritetaan, jos lauseke (tai muuttuja) = arvo1 rikkoo;……………… oletus: / / Toteutetut lausunnot, jos mikään tapaus ei vastaa
Switch-käsky arvioi lausekkeen (tai muuttujan) ja vertaa sen arvoa kunkin tapauksen arvoihin (tai lausekkeisiin) (arvo1, arvo2,…). Kun se löytää vastaavan arvon, tapauksen sisällä olevat lauseet suoritetaan.
Mutta jos mikään yllä olevista tapauksista ei vastaa lauseketta, lauseen sisällä olevat lauseet default
suoritetaan. Oletuslauseke kytkimen lopussa on samanlainen kuin if-lauseen toinen lohko.
Kytkinlausekkeen ongelma on kuitenkin se, että kun vastaava arvo löytyy, se suorittaa kaikki sen jälkeen käskyt kytkinlohkon loppuun asti.
Tämän välttämiseksi käytämme break
lauseita kunkin tapauksen lopussa. Break-lause estää ohjelman suorittamasta ei-yhteensopivia lauseita lopettamalla switch-lauseen suorittamisen.
Lisätietoja taukolausekkeesta on C # -katkoslausekkeessa.
Esimerkki 1: C # switch Statement
using System; namespace Conditional ( class SwitchCase ( public static void Main(string() args) ( char ch; Console.WriteLine("Enter an alphabet"); ch = Convert.ToChar(Console.ReadLine()); switch(Char.ToLower(ch)) ( case 'a': Console.WriteLine("Vowel"); break; case 'e': Console.WriteLine("Vowel"); break; case 'i': Console.WriteLine("Vowel"); break; case 'o': Console.WriteLine("Vowel"); break; case 'u': Console.WriteLine("Vowel"); break; default: Console.WriteLine("Not a vowel"); break; ) ) ) )
Kun suoritamme ohjelmaa, tulos on:
Kirjoita aakkoset X Ei vokaalia
Tässä esimerkissä käyttäjää kehotetaan syöttämään aakkoset. Aakkoset muunnetaan pieniksi käyttämällä ToLower()
menetelmää, jos ne ovat isoja.
Sitten kytkinlauseke tarkistaa, onko käyttäjän kirjoittama aakkoset jokin seuraavista a, e, i, o or u
.
Jos jokin tapauksista täsmää, Vowel
se tulostetaan, muuten ohjaus siirtyy oletuslohkoon ja Not a vowel
tulostetaan tulosteena.
Koska kaikkien vokaalien lähtö on sama, voimme liittää tapaukset seuraavasti:
Esimerkki 2: C # switch -lauseke ryhmiteltyjen tapausten kanssa
using System; namespace Conditional ( class SwitchCase ( public static void Main(string() args) ( char ch; Console.WriteLine("Enter an alphabet"); ch = Convert.ToChar(Console.ReadLine()); switch(Char.ToLower(ch)) ( case 'a': case 'e': case 'i': case 'o': case 'u': Console.WriteLine("Vowel"); break; default: Console.WriteLine("Not a vowel"); break; ) ) ) )
Molempien ohjelmien tulos on sama. Yllä olevassa ohjelmassa kaikki vokaalit tulostavat tuloksen Vowel
ja katkeavat kytkinlausekkeesta.
Vaikka kytkinlauseke saa koodin näyttämään puhtaammalta kuin jos… muuten, jos käsky, kytkin on rajoitettu toimimaan rajoitettujen tietotyyppien kanssa. C #: n Switch-lause toimii vain:
- Primitiiviset tietotyypit: bool, char ja integraalityyppi
- Luetellut tyypit (Enum)
- Jousiluokka
- Yllä olevien tietotyyppien nollaamattomat tyypit
Esimerkki 3: Yksinkertainen laskinohjelma, jossa käytetään C # -kytkimen lausetta
using System; namespace Conditional ( class SwitchCase ( public static void Main(string() args) ( char op; double first, second, result; Console.Write("Enter first number: "); first = Convert.ToDouble(Console.ReadLine()); Console.Write("Enter second number: "); second = Convert.ToDouble(Console.ReadLine()); Console.Write("Enter operator (+, -, *, /): "); op = (char)Console.Read(); switch(op) ( case '+': result = first + second; Console.WriteLine("(0) + (1) = (2)", first, second, result); break; case '-': result = first - second; Console.WriteLine("(0) - (1) = (2)", first, second, result); break; case '*': result = first * second; Console.WriteLine("(0) * (1) = (2)", first, second, result); break; case '/': result = first / second; Console.WriteLine("(0) / (1) = (2)", first, second, result); break; default: Console.WriteLine("Invalid Operator"); break; ) ) ) )
Kun suoritamme ohjelmaa, tulos on:
Syötä ensimmäinen numero: -13.11 Anna toinen numero: 2.41 Syötä operaattori (+, -, *, /): * -13.11 * 2.41 = -31.5951
Yllä oleva ohjelma ottaa käyttäjältä kaksi operandia ja operaattorin ja suorittaa operaation operaattorin perusteella.
Tulot otetaan käyttäjältä käyttäen ReadLine()
ja Read()
-menetelmää. Lisätietoja on artikkelissa C # Basic Input and Output.
Ohjelma käyttää vaihdon tapauslauseketta päätöksentekoon. Vaihtoehtoisesti voimme käyttää if-else if tikkaita saman toiminnon suorittamiseen.