跳到主要内容

C# switch语句

提示
  1. switch语句的作用和优势:在C#中,switch语句用于替代if...else if语句,特别是当需要根据变量或表达式的不同值执行不同操作时。使用switch语句的优势在于代码更清晰易读。
  2. switch语句的结构和工作方式:switch语句通过比较表达式或变量的值与各个case的值,来执行相应的代码块。每个case后通常使用break语句来防止执行后续的case代码块。如果没有匹配的case,执行default块中的代码。
  3. switch语句的适用数据类型和示例:C#中的switch语句可以与基本数据类型(如bool、char、整数)、枚举类型、字符串及其可空类型配合使用。例如,可以用switch语句构建一个简单的计算器来根据不同运算符执行不同的运算。

[Switch 语句可以用来替换 C# 中的 if...else if 语句。使用 switch 而不是 if...else if 语句的优势在于,代码看起来会更加清晰易读。

switch 语句的语法如下:

switch (变量/表达式)
{
case value1:
// 如果表达式(或变量)等于 value1,则执行的语句
break;
case value2:
// 如果表达式(或变量)等于 value2,则执行的语句
break;
... ... ...
... ... ...
default:
// 如果没有匹配的 case,则执行的语句
}

switch 语句评估 表达式(或 变量),并将其值与每个 case 的值(或表达式)(value1value2、……)进行比较。当找到匹配的值时,该 case 内的语句被执行。

但是,如果以上所有 case 都不匹配表达式,那么 default 块内的语句将被执行。switch 末尾的 default 语句类似于 if else 语句中的 else 块。

然而,switch 语句的一个问题是,当找到匹配的值时,它会执行其后的所有语句,直到 switch 块的结尾。

为了避免这种情况,我们在每个 case 的末尾使用 break 语句。break 语句通过终止 switch 语句的执行来阻止程序执行不匹配的语句。

要了解更多关于 break 语句,请访问 C# break 语句

示例 1:C# switch 语句

using System;

namespace Conditional
{
class SwitchCase
{
public static void Main(string[] args)
{
char ch;
Console.WriteLine("请输入一个字母");
ch = Convert.ToChar(Console.ReadLine());

switch(Char.ToLower(ch))
{
case 'a':
Console.WriteLine("元音字母");
break;
case 'e':
Console.WriteLine("元音字母");
break;
case 'i':
Console.WriteLine("元音字母");
break;
case 'o':
Console.WriteLine("元音字母");
break;
case 'u':
Console.WriteLine("元音字母");
break;
default:
Console.WriteLine("不是元音字母");
break;
}
}
}
}

当我们运行程序时,输出将是:

请输入一个字母
X
不是元音字母

在这个例子中,用户被提示输入一个字母。如果字母是大写,使用 ToLower() 方法将其转换为小写。

然后,switch 语句检查用户输入的字母是否是 a, e, i, o 或 u 中的任何一个。

如果匹配到一个 case,就打印 元音字母,否则控制权转移到 default 块,并打印输出 不是元音字母

由于所有元音字母的输出都相同,我们可以将 case 合并为:

示例 2:C# switch 语句中的合并 case

using System;

namespace Conditional
{
class SwitchCase
{
public static void Main(string[] args)
{
char ch;
Console.WriteLine("请输入一个字母");
ch = Convert.ToChar(Console.ReadLine());

switch(Char.ToLower(ch))
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
Console.WriteLine("元音字母");
break;
default:
Console.WriteLine("不是元音字母");
break;
}
}
}
}

这两个程序的输出是相同的。在上面的程序中,所有元音字母都会输出 Vowel 并从 switch 语句中跳出。

尽管 switch 语句使代码看起来比 if...else if 语句更清晰,但 switch 受限于只能与有限的数据类型一起工作。C# 中的 switch 语句只能与以下类型一起使用:

  • 基本数据类型:bool、char 和整型
  • 枚举类型(Enum)
  • 字符串类
  • 上述数据类型的可空类型

示例 3:使用 C# switch 语句的简单计算器程序

using System;

namespace Conditional
{
class SwitchCase
{
public static void Main(string[] args)
{
char op;
double first, second, result;

Console.Write("请输入第一个数字: ");
first = Convert.ToDouble(Console.ReadLine());
Console.Write("请输入第二个数字: ");
second = Convert.ToDouble(Console.ReadLine());
Console.Write("请输入运算符 (+, -, *, /): ");
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("无效的运算符");
break;

}
}
}
}

当我们运行程序时,输出将是:

请输入第一个数字: -13.11
请输入第二个数字: 2.41
请输入运算符 (+, -, *, /): *
-13.11 * 2.41 = -31.5951

上述程序根据用户输入的运算符来对两个操作数进行运算。

输入是通过 ReadLine()Read() 方法从用户那里获取的。要了解更多,请访问 C# 基本输入输出

程序使用 switch case 语句进行决策。另外,我们也可以使用 if-else if 阶梯来执行相同的操作。