C#中的 `case` 关键字用于 `switch` 语句中,定义不同条件分支的匹配值,配合 `switch` 实现多分支选择控制。
1. 传统 switch-case 结构:`switch` 后跟表达式,每个 `case` 后跟常量值和冒号,匹配时执行对应代码块。
- 每个 `case` 分支末尾需用 `break`、`return` 或 `goto` 等跳转语句结束,防止代码继续执行到下一个分支。
- `default` 分支可选,用于处理所有 `case` 都不匹配的情况,通常放在最后。
- 支持多个 `case` 标签指向同一代码块,实现多值匹配。
2. 支持的类型:`switch` 表达式可以是整型、字符型、字符串型或枚举类型,`case` 常量值必须与表达式类型一致。
3. 代码示例:
int day = 2;
switch(day)
{
case 1: Console.WriteLine("Monday"); break;
case 2: Console.WriteLine("Tuesday"); break;
default: Console.WriteLine("Invalid day"); break;
}
新特性有哪些用法
1. 模式匹配(C#7.0+):`case` 可直接进行类型检查和变量捕获,无需先转换类型。
- 例如:`case Circle c:` 可直接将对象转换为 `Circle` 类型并使用变量 `c`。
- 支持 `when` 子句添加额外条件,如 `case Rectangle r when r.Width == r.Height:`。
2. switch 表达式(C8.0+):更简洁的写法,直接返回值而非执行语句块。
- 例如:`string result = x switch { int n => $"int {n}", string s => $"string {s}", _ => "other" };`
- 支持关系模式(如 `< 0`、`>= 90`)、属性模式、列表模式等高级匹配。
3. 关系模式与逻辑组合:可使用 `and`、`or`、`not` 组合条件,如 `case >= 80 and <= 100:`。
常见使用场景
1. 字符串匹配:根据用户输入的字符串执行不同分支,如判断水果类型。
2. 枚举匹配:处理枚举值,如根据 `DayOfWeek` 枚举输出对应星期。
3. 数值范围判断:配合关系模式判断分数等级、测量值范围等。
4. 对象类型分支:根据不同对象类型执行不同逻辑,如计算不同几何形状的面积。

822

被折叠的 条评论
为什么被折叠?



