English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Wenn Sie eine Variable für drei oder mehr Bedingungen testen möchten, können Sie den switch-Befehl anstelle des if-else-Befehls verwenden. Hier erfahren Sie mehr über den switch-Befehl und wie man ihn effektiv in C#-Programmen verwendet.
Hier ist die allgemeine Syntax des switch-Befehls.
Syntax:}}
switch(match Ausdruck/Variable) { case Konstante-value: //auszuführende Anweisungen; break; default: //auszuführende Anweisungen; break; }
Eine switch-Anweisung beginnt mit dem Schlüsselwort switch, das eine Ausdrucksbedingung oder eine Variable in Klammern switch(匹配表达式 match expression) enthält. Das Ergebnis dieser Ausdrucksbedingung oder Variable wird gemäß den case-Bedingungen innerhalb der geschweiften Klammern {} getestet. case muss mit eindeutigen Konstantenwerten angegeben werden und endet mit einem Doppelpunkt:. Jeder Fall enthält einen oder mehrere auszuführende Anweisungen. Wenn der Konstantenwert und der Ausdrucksbedingung/Wert gleich, wird der case ausgeführt. Eine switch-Anweisung kann auch einen optionalen default-Tag enthalten. Wird kein case ausgeführt, wird der default-Tag ausgeführt. Die Schlüsselwörter break, return oder goto werden verwendet, um aus dem switch-Fall das Programmsteuerung zu verlassen.
Nachstehend wird ein einfaches Beispiel einer switch-Anweisung gezeigt.
int x = 10; switch (x { case 5: Console.WriteLine("x-Wert ist5"); break; case 10: Console.WriteLine("x-Wert ist10"); break; case 15: Console.WriteLine("x-Wert ist15"); break; default: Console.WriteLine("Unbekannter Wert"); break; }
x-Wert ist10
Oben, die switch(x) Anweisung enthält eine Variable x, deren Wert mit jedem case Wert wert5,10und15drei Fälle. Es enthält auch den default-Tag, falls kein case-Wert mit switch Variable/Ausdruck passt, wird dieser Label ausgeführt. Jeder case beginnt nach : und enthält einen auszuführenden Befehl. Der Wert von X stimmt mit dem Wert des zweiten Falls überein10: passen, dann ist der Wert der Ausgabe der Wert von x10
Eine switch-Anweisung kann jede leere Ausdrucksbedingung enthalten, die einen Rückgabewert vom Typ char, string, bool, int oder enum hat.
Eine switch-Anweisung kann auch eine Ausdrucksbedingung enthalten, deren Ergebnis bei der Ausführung für jeden case getestet wird.
int x = 125; switch (x % 2) { case 0: Console.WriteLine($"{x} ist gerade"); break; case 1: Console.WriteLine($"{x} ist ungerade"); break; }
125ist ungerade
Switch-Case müssen eindeutige Konstantenwerte sein. Es können bool, char, string, integer, enum oder die entsprechenden nullable Typen sein.
In C# 7Nach .0 können switch-cases nicht eindeutige Werte enthalten. In diesem Fall wird der erste passende case ausgeführt.
Betrachten Sie das folgende einfache Beispiel einer switch-Anweisung.
string statementType = "switch"; switch (statementType) { case "if.else": Console.WriteLine("if...else statement"); break; case "ternary": Console.WriteLine("Ternary operator"); break; case "switch": Console.WriteLine("switch statement"); break; }
switch statement
可以组合多个 case 来执行相同的语句。
int x = 5; switch (x { case 1: Console.WriteLine("x = 1"); break; case 2: Console.WriteLine("x = 2"); break; case 4: case 5: Console.WriteLine("x = 4 or x = 5"); break; default: Console.WriteLine("x > 5"); break; }
每个case必须通过使用break、return、goto语句或其他方式显式地退出case,确保程序控制退出一个case,并且不会进入默认的case。
以下使用 return 关键字。
static void Main(string[] args) { int x = 125; Console.Write( isOdd(x)? "偶数值" : "奇数值"); } static bool isOdd(int i, int j) { switch (x % 2) { case 0: return true; case 1: return false; default: return false; } return false; }
奇数值
没有break、return或goto语句或具有相同常量值的switch case将产生编译时错误。
int x = 1; switch (x { case 0: Console.WriteLine($"{x} is even value"); break; case 1: Console.WriteLine($"{x} is odd Value"); break; case 1: // 错误-控件无法从一个case标签(“ case 1:)进入另一个 case 标签 Console.WriteLine($"{x} is odd Value"); defaut: Console.WriteLine($"{x} is odd Value"); break; }
一个switch语句可以在另一个switch语句中使用。
int j = 5; switch (j { case 5: Console.WriteLine(5); switch (j - 1) { case 4: Console.WriteLine(4); switch (j - 2) { case 3: Console.WriteLine(3); break; } break; } break; case 10: Console.WriteLine(10); break; case 15: Console.WriteLine(15); break; default: Console.WriteLine(100); break; }
5 4 3
Der switch-Ausdruck ist eine Alternative zum if-else-Statement.
Der switch-Ausdruck testet die Übereinstimmung der Ausdrucksbedingung mit einer Gruppe von als case angegebenen Konstanten./Variable.
Um aus dem case auszusteigen, müssen break, return oder goto-Schlüsselwörter im switch-case enthalten sein.
Der switch kann einen optionalen default-Tag enthalten, der ausgeführt wird, wenn kein case ausgeführt wird.
Der C#-Compiler gibt eine Fehlermeldung über fehlende : im case und den Wert der Konstante aus und beendet den case.
Von C#7Ab Version .0 kann der switch-Bedingung nicht eindeutige Werte enthalten. In diesem Fall wird die erste passende Bedingung ausgeführt.