分支语句

最近自学了一段时间的分支语句,感觉也不是很难的样子,其实也就是熟悉语句的用法,然后进行各种各样的练习。
分支语句(选择结构):
分支语句主要包括if和switch
•if语句的语法结构:
if (表达式)
语句;

if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
解释一下:
如果表达式的结果为真,结果语句1执行,否则表达式2执行.
在c语言中,0表示假,非0表示真.
具体代码:

结果:在这里插入图片描述

在这里插入图片描述
•switch语句也是一种分支语句。常常用于多分支的情况。
switch语句的语法结构:
switch(整形表达式)
{
语句项;
}

语句项是什么呢?
//是一些case语句
case整型常量表达式;
语句;
switch语句中的break
在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支。
代码:在这里插入图片描述
结果:

在这里插入图片描述
default语句:
如果表达的值域所有的case标签的值都不匹配怎么办? 其实也没什么 ----所有的语句都被跳过而已。 程序并 不会终止,也不会报错,因为这种情况在C中并不认为适合错误。这时候可以在语句列表中增加一条default子句,把下面的标签 default: 写在任何 一个case标签可以出现的位置。
代码:
在这里插入图片描述
结果:
在这里插入图片描述
在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。

<think>我们被要求回答关于C#分支语句的使用方法和示例,特别是if和switch语句。根据用户提供的引用,我们有关于switch语句的详细信息和一些if语句的示例。我们将结合这些信息,并参考用户之前的问题(关于if语句的详解)来构建回答。 回答结构: 1. 介绍分支语句的概念。 2. 分别详细介绍if语句和switch语句的语法、用法和示例。 3. 比较if和switch的适用场景。 4. 提供一些最佳实践和常见错误。 注意:引用[1][2][3]主要关于switch,引用[4]是关于if和switch的,引用[5]提供了switch的一些高级用法(如case穿透、模式匹配等)。同时,用户之前的问题中我们已经详细介绍了if语句,这里可以适当简化,重点放在switch上,并补充一些if和switch的对比。 开始回答:</think>### C# 分支语句详解与示例 分支语句是控制程序执行路径的核心结构,C# 主要提供 `if-else` 和 `switch` 两种分支语句。以下是详细用法及最佳实践: --- #### 一、`if-else` 语句 **语法结构**: ```csharp if (condition1) { // 条件1为 true 时执行 } else if (condition2) // 可选 { // 条件2为 true 时执行 } else // 可选 { // 所有条件为 false 时执行 } ``` **典型场景**: - 处理连续范围值(如成绩评级) - 需要组合多个逻辑条件时 **示例**:成绩评级系统 ```csharp int score = 85; if (score >= 90) { Console.WriteLine("A"); } else if (score >= 70) // 隐含 score < 90 { Console.WriteLine("B"); // 输出:B } else if (score >= 60) { Console.WriteLine("C"); } else { Console.WriteLine("D"); } ``` --- #### 二、`switch` 语句 **语法结构**: ```csharp switch (expression) { case value1: // 匹配 value1 时执行 break; case value2: // 可多个 case 合并 case value3: // 匹配 value2 或 value3 时执行 break; default: // 可选 // 无匹配时执行 break; } ``` **关键特性**: 1. **精确匹配**: ```csharp int day = 3; switch (day) { case 1: Console.WriteLine("周一"); break; case 2: Console.WriteLine("周二"); break; default: Console.WriteLine("其他"); break; } ``` 2. **Case 穿透**(需显式声明): ```csharp int month = 2; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: Console.WriteLine($"{month}月有31天"); // 合并相同操作 break; case 2: Console.WriteLine($"{month}月有28天"); break; default: Console.WriteLine($"{month}月有30天"); break; } ``` 3. **模式匹配**(C# 7.0+): ```csharp int a = 5; switch (a) { case int n when (n > 0 && n < 10): // 区间匹配 Console.WriteLine("a在0~10之间"); break; default: Console.WriteLine("a不在区间内"); break; } ``` --- #### 三、`if-else` vs `switch` 适用场景 | **特性** | `if-else` | `switch` | |------------------------|------------------------------------|-----------------------------------| | **条件类型** | 任意布尔表达式 | 整数、枚举、字符串 | | **条件范围** | 连续区间(如 `score > 60`) | 离散值(如固定枚举值) | | **可读性** | 简单条件时清晰 | 多分支时更简洁 | | **高级功能** | 支持复杂逻辑组合 | 支持模式匹配(C# 7.0+) | > **最佳实践**: > - 超过 3 个离散值分支时优先用 `switch` 提升可读性 > - 使用 `when` 关键字实现带条件的模式匹配[^5] > - 始终添加 `default` 分支处理意外值 --- #### 四、常见错误规避 1. **`switch` 漏写 `break`**: ```csharp // 错误:缺少 break 导致编译失败 case 1: Console.WriteLine("Monday"); // 正确:必须添加 break 或 return case 1: Console.WriteLine("Monday"); break; // 或 return/goto ``` 2. **`if` 条件误加分号**: ```csharp // 错误:分号使 if 失效 if (isValid); // 空语句 { Execute(); // 始终执行 } ``` --- **附:综合应用示例** ```csharp // 根据用户权限和状态输出信息 string role = "Admin"; int status = 2; switch (role) { case "Admin" when (status >= 1): // 带条件的模式匹配 Console.WriteLine("管理员已激活"); break; case "User": if (status == 0) Console.WriteLine("用户未激活"); else Console.WriteLine("用户正常"); break; default: Console.WriteLine("角色无效"); break; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值