switch c#
时间: 2025-05-13 10:44:14 浏览: 19
### C# 中 Switch 语句的用法
C# 的 `switch` 语句是一种多分支选择结构,用于根据变量的不同值执行不同的代码块。它提供了一种更简洁的方式来替代多个 `if-else` 条件判断。
#### 基本语法
以下是 C# 中 `switch` 语句的基本形式:
```csharp
switch (expression)
{
case constant1:
// 执行代码块1
break;
case constant2:
// 执行代码块2
break;
default:
// 默认执行代码块
break;
}
```
- **expression**: 被测试的表达式。
- **constantN**: 每个 `case` 子句中的常量值,必须与 `expression` 类型兼容。
- **break**: 结束当前 `case` 并退出 `switch` 语句。如果省略 `break`,程序将继续执行下一个 `case`,这被称为“贯穿”行为[^3]。
- **default**: 可选子句,在没有任何 `case` 匹配时执行。
#### 示例:基本整数匹配
下面是一个简单的例子,展示如何使用 `switch` 进行整数值匹配。
```csharp
int dayOfWeek = 3;
switch (dayOfWeek)
{
case 1:
Console.WriteLine("Monday");
break;
case 2:
Console.WriteLine("Tuesday");
break;
case 3:
Console.WriteLine("Wednesday");
break;
default:
Console.WriteLine("Unknown Day");
break;
}
// 输出: Wednesday
```
#### 支持范围模式(Range Patterns)
从 C# 9.0 开始,可以利用模式匹配功能增强 `switch` 表达式的灵活性。例如,可以通过条件过滤器实现复杂的逻辑[^4]。
```csharp
var number = 5;
switch (number)
{
case int n when n >= 1 && n <= 10:
Console.WriteLine($"{n} is between 1 and 10.");
break;
case int n when n > 10:
Console.WriteLine($"{n} is greater than 10.");
break;
default:
Console.WriteLine("Number out of range.");
break;
}
// 输出: 5 is between 1 and 10.
```
#### 守卫条件(Guard Clauses)
类似于引用中提到的内容[^2],可以在 C# 的 `switch` 语句中通过守卫条件进一步细化匹配规则。这种特性允许开发者定义更加精确的行为。
```csharp
(int x, int y) tuple = (3, 7);
switch (tuple)
{
case var t when t.x < t.y:
Console.WriteLine($"x ({t.x}) is less than y ({t.y}).");
break;
case var t when t.x == t.y:
Console.WriteLine("x equals y.");
break;
default:
Console.WriteLine("No match found.");
break;
}
// 输出: x (3) is less than y (7).
```
#### 左到右求值顺序
需要注意的是,虽然某些操作符在其他语言中有特定的求值顺序规定[^1],但在 C# 中,`switch` 表达式本身并不涉及复杂运算符组合问题。因此其求值顺序通常遵循自然书写顺序。
---
###
阅读全文
相关推荐
















