C#个人学习笔记之if-else 条件判断完整教程
·
C# 基础语法:if-else 条件判断完整教程–009
一、前言
条件判断是程序分支逻辑的核心,if-else 用于根据布尔条件(true/false) 执行不同代码块。C# 中所有判断条件必须返回 bool 类型,不支持数字 0/非0隐式转换,这点和 C/C++ 有明显区别。
二、基础语法分类
1. 单 if 语句(只满足条件才执行)
语法格式
if (条件表达式)
{
// 条件为 true 执行的代码
}
- 条件必须包裹
(); - 代码只有一行时可省略
{},但工程开发建议永远加花括号避免歧义。
示例代码
int age = 20;
if (age >= 18)
{
Console.WriteLine("成年人,可以上网");
}
2. if-else 二分支(二选一)
满足 if 走if代码块,不满足自动走 else。
语法
if (条件)
{
// true执行
}
else
{
// false执行
}
示例
int score = 59;
if (score >= 60)
{
Console.WriteLine("考试及格");
}
else
{
Console.WriteLine("考试不及格,需要补考");
}
3. if-else if 多分支(多条件依次判断)
多个互斥条件,从上到下依次匹配,匹配成功后直接跳出整个分支结构。
语法
if (条件1)
{
// 条件1成立
}
else if (条件2)
{
// 条件1不成立,条件2成立
}
else if (条件3)
{
// 前两个都不成立,条件3成立
}
else
{
// 所有条件都不成立
}
成绩分级实战案例
int score = 85;
if (score >= 90)
{
Console.WriteLine("优秀");
}
else if (score >= 80)
{
Console.WriteLine("良好");
}
else if (score >= 60)
{
Console.WriteLine("及格");
}
else
{
Console.WriteLine("不及格");
}
注意:判断顺序不能颠倒,如果先写
>=60,90分会直接匹配60分支,逻辑出错。
4. 嵌套 if-else(分支内部再套判断)
在if/else代码块中继续写条件判断,适合多层校验场景。
示例:判断是否成年且有无驾照
int age = 22;
bool hasDriverLicense = true;
if (age >= 18)
{
Console.WriteLine("已成年");
if (hasDriverLicense)
{
Console.WriteLine("可以开车上路");
}
else
{
Console.WriteLine("成年但没有驾照,不能开车");
}
}
else
{
Console.WriteLine("未成年,禁止驾驶");
}
三、关键语法规则(踩坑重点)
-
条件只能是 bool
C# 严格语法,不能写if(1)、if(0),必须写成if(num != 0)。
错误写法:int num = 10; if(num) // 编译报错,无法把int转bool {}正确写法:
if(num > 0) {} -
省略大括号的陷阱
只有紧跟if的一行代码属于分支,后续代码不受控制:int a = 5; if(a > 10) Console.WriteLine("大于10"); Console.WriteLine("永远会执行"); // 不属于if内部 -
else 就近匹配原则
else 永远匹配离它最近、未配对的if:int x = 3; if (x > 1) if (x > 5) Console.WriteLine("大于5"); else Console.WriteLine("1~5之间"); // 匹配内层if规范写法:统一加花括号消除歧义。
-
逻辑运算符组合多条件
&&逻辑与:全部条件true才成立||逻辑或:任意一个true就成立!逻辑非:取反
int age = 25; bool vip = true; // 年满18 并且 是VIP if (age >= 18 && vip) { Console.WriteLine("VIP会员通道"); }
四、三元运算符(if-else简写)
简单二分支可使用三元 条件 ? 真表达式 : 假表达式,等价于单行if-else。
int score = 70;
string res = score >= 60 ? "及格" : "不及格";
Console.WriteLine(res);
限制:只能写表达式,不能执行多行代码、Console输出等复杂逻辑。
五、完整可运行Demo(控制台程序)
using System;
namespace IfElseDemo
{
class Program
{
static void Main(string[] args)
{
Console.Write("请输入你的分数:");
int score = Convert.ToInt32(Console.ReadLine());
if (score >= 90)
{
Console.WriteLine("评级:优秀");
}
else if (score >= 80)
{
Console.WriteLine("评级:良好");
}
else if (score >= 60)
{
Console.WriteLine("评级:及格");
}
else
{
Console.WriteLine("评级:不及格");
}
// 嵌套判断演示
Console.Write("输入年龄:");
int age = Convert.ToInt32(Console.ReadLine());
if (age >= 18)
{
Console.WriteLine("成年人");
Console.Write("是否有驾照(true/false):");
bool license = Convert.ToBoolean(Console.ReadLine());
if (license)
{
Console.WriteLine("允许驾车");
}
else
{
Console.WriteLine("无驾照不能开车");
}
}
else
{
Console.WriteLine("未成年人禁止驾车");
}
}
}
}
六、常见面试/开发问题总结
- C# if 和 C++ if 最大区别?
C# 判断条件强制bool,不支持数字隐式布尔转换。 - else if 和多个独立if的区别?
else if:互斥,匹配一个就结束;多个if:独立判断,全部条件都会校验。 - 什么时候用嵌套if,什么时候用逻辑&&合并条件?
简单多条件用&&;分层校验、需要中间输出日志时用嵌套if。 - 三元运算符和if-else怎么选?
仅简单赋值用三元,复杂逻辑优先if-else可读性更高。
七、学习小结
if:单一条件判断;if-else:二选一逻辑;if-else if:多区间、多选项判断;- 嵌套if:多层递进校验;
- 条件必须为布尔值,开发规范统一使用大括号包裹代码块。
更多推荐
所有评论(0)