C#流程控制详解:if-else与switch语句实战
C#程序默认按顺序执行,但实际开发常需根据条件执行特定代码。本文重点讲解利用关系运算符构建条件,并通过if-else实现双路分支、条件运算符处理多逻辑组合,以及使用switch-case进行多值匹配的详细操作与原理。
结果或目标
在C#应用中实现对业务逻辑的条件化分发:当满足特定数值或字符串条件时,引导程序进入对应的处理路径;若未匹配则提供兜底逻辑。目标是掌握编写清晰、高效且符合语言规范的分支控制结构。
准备条件
- 已安装支持
.NET的开发环境(如 Visual Studio 或 VS Code)。 - 理解基础变量声明与控制台输入输出:
Console.WriteLine()和Console.ReadLine()。 - 了解基本数据类型
int与string的转换方法Convert.ToInt32()。
第1步:理解关系型运算符及其优先级
流程控制的基石是条件表达式,而条件依赖关系型运算符(如比较大小、相等性)。理解这些运算符的优先级至关重要,它决定了复杂表达式的计算顺序。
C#关系运算符主要分为两类:
- 高优先级:
<,>,<=,>=(先于其他比较进行)。 - 低优先级:
==,!=(最后进行比较)。
以下表格展示了常用关系运算符的含义与结果类型:
注意:所有关系运算符的结果均为布尔值 true 或 false。当表达式中混合多种运算符时,编译器会依据上述优先级自动分组。例如在 (10 > 5 == 10 < 5) 中:
if (10 > 5 == 10 < 5) { }
// 解析步骤:
// 1. 高优先级的 > 和 < 先计算
// 2. 左侧 10 > 5 结果为 true
// 3. 右侧 10 < 5 结果为 false
// 4. 表达式变为 true == false
// 5. 最终结果:false
第2步:使用 if-else 处理二元分支
if(如果)与 else(否则)是最基本的分支结构,用于处理“二选一”的逻辑场景。
操作步骤
- 获取输入: 接收用户数据并进行类型转换。
- 构建条件: 使用关系运算符创建布尔表达式。
- 指定执行块: 为
if和else分别定义{ }代码块。
代码示例:两数之和判断
需求:输入两个整数 a 和 b,若和大于10则提示“大于10”,否则提示“小于等于10”。
Console.Write("请输入a的值:");
int a = Convert.ToInt32(Console.ReadLine());
Console.Write("请输入b的值:");
int b = Convert.ToInt32(Console.ReadLine());
// 算数运算符 + 优先级高于关系运算符 >
// 先计算 a+b,再判断是否 > 10
if (a + b > 10)
{
Console.WriteLine("a + b 的和大于10");
}
else
{
Console.WriteLine("a + b 的和小于等于10");
}
执行逻辑分析:
- 若
a=6, b=5,a+b=11。11 > 10为true,执行if块输出结果。 - 若
a=5, b=3,a+b=8。8 > 10为false,跳转至else块输出结果。
运行界面如下:
第3步:结合条件运算符处理多重逻辑
当单一比较无法满足需求时,需引入逻辑运算符(&& 与逻辑或 | |)来组合多个条件。对于连续区间判断(如年龄在20到30之间),通常采用逻辑与连接两个边界条件。
操作要点
- 优先级注意: 关系运算符优先级高于逻辑运算符。因此
age > 20 && age < 30等价于(age > 20) && (age < 30)。 - 逻辑与 (
&&): 仅当左右两边都为true时,整体才为真。
代码示例:年龄验证
Console.Write("请输入您的年龄:");
int age = Convert.ToInt32(Console.ReadLine());
// 同时满足大于20且小于30
if (age > 20 && age < 30)
{
Console.WriteLine("你很年轻");
}
else
{
Console.WriteLine("你的年龄不满足我的要求");
}
逻辑推导:
- 假设
age = 25。 - 先进行关系运算:
25 > 20为true,25 < 30为true。 - 进行逻辑与运算:
true && true结果为true。 - 进入
if分支,输出“你很年轻”。
相关运算规则参考:
第4步:使用 switch-case 处理多值匹配
当需要针对一个变量的多个可能取值执行不同操作时,switch 语句比多层 if-else 更清晰。它适合离散值的精确匹配。
操作步骤
- 确定表达式:
switch括号内放入待匹配的变量或常量(通常为int,string,enum)。 - 定义case: 每个
case后跟随一个常数,表示匹配值。 - 添加 break: 每个
case块末尾必须使用break跳出,防止“穿透”(Fall-through)到下一个 case。 - 设置 default: 可选的兜底分支,处理未匹配任何 case 的情况。
代码示例:餐厅点餐系统
Console.WriteLine("/**********************************/");
Console.WriteLine("本店提供:1.汉堡 2.牛排 3.披萨");
Console.Write("选择需要的食物:");
string num = Console.ReadLine();
switch (num)
{
case "1": // 匹配字符串 "1"
Console.WriteLine("您点的汉堡请慢用");
break;
case "2": // 匹配字符串 "2"
Console.WriteLine("您点的牛排请慢用");
break;
case "3": // 匹配字符串 "3"
Console.WriteLine("您点的披萨请慢用");
break;
default: // 未匹配任何数字时执行
Console.WriteLine("本店无您所需的食品");
break;
}
执行逻辑:
- 输入
"1":switch查找case "1",匹配成功,执行打印,遇到break退出。 - 输入
"5":switch未找到匹配的case,直接进入default分支,输出提示信息。
运行效果参考:
完成判断与注意事项
- 完整性检查: 确认每个
switch的case都有对应的break(除非有意穿透)。 - 类型安全:
switch的表达式类型必须与case标签类型兼容或可隐式转换。 - 异常处理: 在实际项目中,建议对
Console.ReadLine()的输入做非空或格式校验,避免Convert.ToInt32抛出异常导致程序崩溃。
简要总结
掌握 if-else 的二元逻辑判定与 switch-case 的多路分发机制,是编写健壮C#程序的基础。理清运算符优先级能避免逻辑陷阱,而合理使用 break 和 default 能保证程序行为的可预测性。以上就是C#流程控制语句(if-else与switch-case)的详细内容,更多关于C#编程入门的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













