NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# C# `switch`语句 > 原文: [https://www.programiz.com/csharp-programming/switch-statement](https://www.programiz.com/csharp-programming/switch-statement) #### 在本文中,我们将学习 C# 中的`switch`语句以及如何在示例中使用它们。 `switch`语句可用于替换 C# 中的`if...else if`语句。 使用`switch`语句的好处是,使用`switch`看起来代码更清晰易读。 `switch`语句的语法为: ```cs switch (variable/expression) { case value1: // Statements executed if expression(or variable) = value1 break; case value2: // Statements executed if expression(or variable) = value1 break; ... ... ... ... ... ... default: // Statements executed if no case matches } ``` `switch`语句求值`expression`(或`variable`),并将其值与每种情况下的值(或表达式)(`value1`,`value2`,…)。 当找到匹配值时,将执行该情况下的语句。 但是,如果以上情况均不匹配表达式,则将执行`default`块中的语句。`switch`末尾的默认语句与`if else`语句中的`else`块相似。 但是`switch`语句的问题是,当找到匹配值时,它将执行之后的所有语句,直到`switch`块结束。 为了避免这种情况,我们在每种情况下使用`break`语句。`break`语句通过终止`switch`语句的执行来阻止程序执行不匹配的语句。 要了解有关`break`语句的更多信息,请访问 *C# `break`语句*。 * * * ## 示例 1:C# `switch`语句 ```cs 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; } } } } ``` 当我们运行程序时,输出将是: ```cs Enter an alphabet X Not a vowel ``` 在此示例中,提示用户输入字母。 如果字母为大写,则使用`ToLower()`方法将其转换为小写。 然后,`switch`语句检查用户输入的字母是否为`a, e, i, o or u`中的任何一个。 如果其中一种情况匹配,则打印`Vowel`,否则控制转到默认块,并且将`Not a vowel`打印为输出。 由于所有元音的输出都相同,因此我们可以将案例合并为: * * * ## 示例 2:带有分组`case`的 C# `switch`语句 ```cs 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; } } } } ``` 两个程序的输出是相同的。 在上面的程序中,所有元音都打印输出`Vowel`,并从`switch`语句中断。 尽管`switch`语句使代码看起来比`if...else if`语句更干净,但是`switch`仅限于有限的数据类型。 C# 中的`switch`语句仅适用于: * 基本数据类型:布尔型,字符型和整数型 * *枚举类型(枚举)* * 字符串类 * 以上数据类型的可空类型 * * * ## 示例 3:使用 C# `switch`的简单计算器程序 ```cs 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; } } } } ``` 当我们运行程序时,输出将是: ```cs Enter first number: -13.11 Enter second number: 2.41 Enter operator (+, -, *, /): * -13.11 * 2.41 = -31.5951 ``` 上面的程序将两个操作数和一个运算符作为用户的输入,并基于该运算符执行操作。 使用`ReadLine()`和`Read()`方法从用户那里获取输入。 要了解更多信息,请访问 [C# 基本输入和输出](/csharp-programming/basic-input-output "Basic input and output in C#")。 该程序使用`switch case`语句进行决策。 另外,我们可以使用`if-else if`梯形图执行相同的操作。