掌握 C# switch 语句:语法、示例与最佳实践
C# switch 语句
学习如何用简洁、可读的 switch 语句替代复杂的 if-else 链——附带实战示例。
switch 语句通过评估单个表达式并执行匹配的 case 块来简化决策。相比冗长的 if-else 阶梯,switch 语法更简洁、易维护。
基本结构:
switch (variableOrExpression) {
case value1:
// value1 对应的代码
break;
case value2:
// value2 对应的代码
break;
// …
default:
// 无 case 匹配时的代码
}
表达式匹配某 case 时,对应块运行直到 break 终止 switch。无匹配则执行 default 块,类似 else 子句。
缺少 break 会导致“穿透”继续执行后续 case,常引发 Bug。深入了解 C# break 语句 请参考官方文档。
示例 1:识别元音字母
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;
}
}
}
}
运行输出:
Enter an alphabet X Not a vowel
用户输入转为小写后与元音 case 匹配。无匹配时显示默认消息。
因所有元音 case 执行相同动作,可合并:
示例 2:合并 Case
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;
}
}
}
}
输出相同,代码更简洁。
switch 语句支持的数据类型:
- 基本类型(bool、char、整数类型)
- 枚举
- 字符串
- 上述类型的可空版本
示例 3:简单计算器
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;
}
}
}
}
运行示例:
Enter first number: -13.11 Enter second number: 2.41 Enter operator (+, -, *, /): * -13.11 * 2.41 = -31.5951
计算器接收两个操作数和一个运算符,用 switch 执行对应操作。输入用 ReadLine() 和 Read() 读取;更多 I/O 详见 C# 基础输入输出。
虽可用 if-else 替代,但 switch 对离散值意图更清晰、执行更快。
C语言