In diesem Artikel erfahren Sie mehr über die switch-Anweisung in C # und deren Verwendung anhand von Beispielen.
Die switch-Anweisung kann verwendet werden, um die if… else if-Anweisung in C # zu ersetzen. Der Vorteil der Verwendung von switch over if… else if Anweisung ist, dass die Codes mit switch viel sauberer und lesbarer aussehen.
Die Syntax der switch-Anweisung lautet:
switch (Variable / Ausdruck) (case value1: // Anweisungen, die ausgeführt werden, wenn expression (oder variable) = value1 break; case value2: // Anweisungen, die ausgeführt werden, wenn expression (oder variable) = value1 break ausgeführt werden; ………………………: default: / / Anweisungen ausgeführt, wenn kein Fall übereinstimmt)
Die switch-Anweisung wertet den Ausdruck (oder die Variable) aus und vergleicht seinen Wert mit den Werten (oder Ausdrücken) jedes Einzelfalls (Wert1, Wert2,…). Wenn der übereinstimmende Wert gefunden wird, werden die Anweisungen in diesem Fall ausgeführt.
Wenn jedoch keiner der oben genannten Fälle mit dem Ausdruck übereinstimmt, werden die Anweisungen im default
Block ausgeführt. Die Standardanweisung am Ende des Schalters ähnelt dem else-Block in der if else-Anweisung.
Ein Problem mit der switch-Anweisung besteht jedoch darin, dass, wenn der übereinstimmende Wert gefunden wird, alle darauf folgenden Anweisungen bis zum Ende des switch-Blocks ausgeführt werden.
Um dies zu vermeiden, verwenden wir break
am Ende eines jeden Falles eine Anweisung. Die break-Anweisung verhindert, dass das Programm nicht übereinstimmende Anweisungen ausführt, indem die Ausführung der switch-Anweisung beendet wird.
Weitere Informationen zur break-Anweisung finden Sie unter C # break-Anweisung.
Beispiel 1: C # switch-Anweisung
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; ) ) ) )
Wenn wir das Programm ausführen, lautet die Ausgabe:
Geben Sie ein Alphabet ein X Kein Vokal
In diesem Beispiel wird der Benutzer aufgefordert, ein Alphabet einzugeben. Das Alphabet wird mithilfe der ToLower()
Methode in Kleinbuchstaben umgewandelt, wenn es in Großbuchstaben geschrieben ist.
Anschließend prüft die switch-Anweisung, ob das vom Benutzer eingegebene Alphabet eines von ihnen ist a, e, i, o or u
.
Wenn einer der Fälle übereinstimmt, Vowel
wird er gedruckt, andernfalls wechselt das Steuerelement zum Standardblock und Not a vowel
wird als Ausgabe gedruckt.
Da die Ausgabe für alle Vokale gleich ist, können wir die Fälle wie folgt verbinden:
Beispiel 2: C # switch-Anweisung mit gruppierten Fällen
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; ) ) ) )
Die Ausgabe beider Programme ist gleich. Im obigen Programm drucken alle Vokale die Ausgabe Vowel
und brechen von der switch-Anweisung ab.
Obwohl die switch-Anweisung den Code sauberer aussehen lässt als if… else if-Anweisung, ist switch auf die Arbeit mit begrenzten Datentypen beschränkt. Die Switch-Anweisung in C # funktioniert nur mit:
- Primitive Datentypen: Bool, Char und Integraltyp
- Aufzählungsarten (Aufzählung)
- String-Klasse
- Nullable Typen der oben genannten Datentypen
Beispiel 3: Einfaches Taschenrechnerprogramm mit C # switch-Anweisung
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; ) ) ) )
Wenn wir das Programm ausführen, lautet die Ausgabe:
Geben Sie die erste Nummer ein: -13.11 Geben Sie die zweite Nummer ein: 2.41 Geben Sie den Operator ein (+, -, *, /): * -13.11 * 2.41 = -31.5951
Das obige Programm verwendet zwei Operanden und einen Operator als Eingabe vom Benutzer und führt die Operation basierend auf dem Operator aus.
Die Eingaben werden vom Benutzer mit der Methode ReadLine()
und übernommen Read()
. Weitere Informationen finden Sie unter C # Basic Input and Output.
Das Programm verwendet die switch case-Anweisung zur Entscheidungsfindung. Alternativ können wir if-else if-Leiter verwenden, um denselben Vorgang auszuführen.