C#流程控制详解:if-else与switch语句实战

向北走
向北走
发布时间:2026-10-14 | 4人浏览过
原创

C#程序默认按顺序执行,但实际开发常需根据条件执行特定代码。本文重点讲解利用关系运算符构建条件,并通过if-else实现双路分支、条件运算符处理多逻辑组合,以及使用switch-case进行多值匹配的详细操作与原理。

结果或目标

在C#应用中实现对业务逻辑的条件化分发:当满足特定数值或字符串条件时,引导程序进入对应的处理路径;若未匹配则提供兜底逻辑。目标是掌握编写清晰、高效且符合语言规范的分支控制结构。

准备条件

  1. 已安装支持 .NET 的开发环境(如 Visual Studio 或 VS Code)。
  2. 理解基础变量声明与控制台输入输出:Console.WriteLine() 和 Console.ReadLine()。
  3. 了解基本数据类型 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(否则)是最基本的分支结构,用于处理“二选一”的逻辑场景。

操作步骤

  1. 获取输入: 接收用户数据并进行类型转换。
  2. 构建条件: 使用关系运算符创建布尔表达式。
  3. 指定执行块: 为 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("你的年龄不满足我的要求");
}

逻辑推导:

  1. 假设 age = 25。
  2. 先进行关系运算:25 > 20 为 true,25 < 30 为 true。
  3. 进行逻辑与运算:true && true 结果为 true。
  4. 进入 if 分支,输出“你很年轻”。

相关运算规则参考:

第4步:使用 switch-case 处理多值匹配

当需要针对一个变量的多个可能取值执行不同操作时,switch 语句比多层 if-else 更清晰。它适合离散值的精确匹配。

操作步骤

  1. 确定表达式: switch 括号内放入待匹配的变量或常量(通常为 int, string, enum)。
  2. 定义case: 每个 case 后跟随一个常数,表示匹配值。
  3. 添加 break: 每个 case 块末尾必须使用 break 跳出,防止“穿透”(Fall-through)到下一个 case。
  4. 设置 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#编程入门的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表