在 C# 开发中,判断结构是最基础、也是最常用的控制流程之一。程序通过判断条件的真假,决定执行不同的代码逻辑。本文将系统讲解 C# 中常见的判断语句及其使用方式,并结合示例帮助理解。
一、什么是判断结构?
判断结构用于根据条件表达式(布尔值)的结果,执行不同的代码块。
其核心逻辑:
如果条件成立(true) → 执行代码A
如果条件不成立(false) → 执行代码B(可选)
二、if 语句
1️⃣ 基本 if 语句
语法格式
csharp
if (条件表达式)
{
// 条件为 true 时执行
}
示例
csharp
int age = 18;
if (age >= 18)
{
Console.WriteLine("已成年");
}
当 age >= 18 为 true 时,输出"已成年"。
2️⃣ if...else 语句
语法格式
csharp
if (条件表达式)
{
// 条件为 true
}
else
{
// 条件为 false
}
示例
csharp
int score = 59;
if (score >= 60)
{
Console.WriteLine("考试通过");
}
else
{
Console.WriteLine("考试未通过");
}
3️⃣ if...else if...else 语句
适用于多个条件判断。
示例
csharp
int score = 85;
if (score >= 90)
{
Console.WriteLine("优秀");
}
else if (score >= 80)
{
Console.WriteLine("良好");
}
else if (score >= 60)
{
Console.WriteLine("及格");
}
else
{
Console.WriteLine("不及格");
}
执行顺序是从上到下依次判断,只要满足一个条件就不会继续往下执行。
4️⃣ 嵌套 if 语句
在 if 或 else 代码块中继续使用 if。
csharp
int age = 20;
bool hasID = true;
if (age >= 18)
{
if (hasID)
{
Console.WriteLine("允许进入");
}
}
⚠️ 注意:嵌套层级不宜过多,否则会影响代码可读性。
三、switch 语句
当需要对一个变量进行多个固定值判断时,推荐使用 switch。
1️⃣ 基本 switch 结构
语法格式
csharp
switch (表达式)
{
case 值1:
// 执行语句
break;
case 值2:
// 执行语句
break;
default:
// 默认执行
break;
}
示例
csharp
int day = 3;
switch (day)
{
case 1:
Console.WriteLine("星期一");
break;
case 2:
Console.WriteLine("星期二");
break;
case 3:
Console.WriteLine("星期三");
break;
default:
Console.WriteLine("未知日期");
break;
}
🔹 注意事项
- 必须使用
break default类似于 else- 适用于固定值判断,不适用于范围判断
2️⃣ 嵌套 switch
csharp
int category = 1;
int type = 2;
switch (category)
{
case 1:
switch (type)
{
case 1:
Console.WriteLine("分类1-类型1");
break;
case 2:
Console.WriteLine("分类1-类型2");
break;
}
break;
}
四、C# Null 条件运算符(?.)
在 C# 6.0 之后引入,用于避免空引用异常。
传统写法
csharp
if (person != null)
{
Console.WriteLine(person.Name);
}
使用 ?. 运算符
csharp
Console.WriteLine(person?.Name);
如果 person 为 null,则不会抛出异常,而是返回 null。
链式调用示例
csharp
var length = person?.Name?.Length;
只要中间有一个为 null,整个表达式就会返回 null。
✅ 提高代码简洁性
✅ 减少 if 判断
✅ 避免 NullReferenceException
五、条件运算符(? :)------三目运算符
三目运算符可以替代简单的 if...else。
语法格式
csharp
条件表达式 ? 表达式1 : 表达式2;
解释:
- 条件为 true → 执行表达式1
- 条件为 false → 执行表达式2
示例
csharp
int score = 80;
string result = score >= 60 ? "及格" : "不及格";
Console.WriteLine(result);
等价于:
csharp
string result;
if (score >= 60)
{
result = "及格";
}
else
{
result = "不及格";
}
多层三目运算符(不推荐)
csharp
string grade = score >= 90 ? "A" :
score >= 80 ? "B" :
score >= 70 ? "C" : "D";
⚠️ 建议不要嵌套过深,影响可读性。
六、if 与 switch 如何选择?
| 场景 | 推荐使用 |
|---|---|
| 范围判断 | if |
| 固定值判断 | switch |
| 简单二选一 | 三目运算符 |
| 防止空引用 | ?. |
七、常见错误总结
❌ 忘记写 break
会导致 case 穿透(C# 默认不允许隐式穿透)。
❌ 使用 = 而不是 ==
csharp
if (a = 5) // 错误
应写:
csharp
if (a == 5)
❌ 过度嵌套
嵌套层数超过 3 层建议重构代码。
八、总结
C# 中的判断结构包括:
- ✅ if
- ✅ if...else
- ✅ 嵌套 if
- ✅ switch
- ✅ 嵌套 switch
- ✅ Null 条件运算符 ?.
- ✅ 条件运算符 ? :
掌握判断结构是编写逻辑代码的基础。实际开发中应根据场景选择最合适的判断方式,同时注意代码的可读性与维护性。
如果你正在学习 C#,建议多写示例代码进行练习。
下一篇可以深入讲解:
👉 C# 循环结构(for、while、foreach)
需要我帮你写进阶版(包含模式匹配 switch 表达式、is 模式匹配、when 关键字)也可以告诉我 👍