在 C# 中,判断语句用于根据条件执行不同的代码逻辑,常见的有:
ifif...elseif...else if...elseswitch- 三元运算符
?: - 模式匹配(C# 7.0+)
1. if 语句
最基本的条件判断。
cs
int age = 20;
if (age >= 18)
{
Console.WriteLine("成年人");
}
执行流程:
条件成立(True) → 执行代码块
条件不成立(False) → 跳过代码块
2. if...else
二选一判断。
cs
int score = 50;
if (score >= 60)
{
Console.WriteLine("及格");
}
else
{
Console.WriteLine("不及格");
}
输出:
不及格
3. if...else if...else
多条件判断。
cs
int score = 85;
if (score >= 90)
{
Console.WriteLine("优秀");
}
else if (score >= 80)
{
Console.WriteLine("良好");
}
else if (score >= 60)
{
Console.WriteLine("及格");
}
else
{
Console.WriteLine("不及格");
}
输出:
良好
执行特点:
- 从上往下依次判断
- 满足一个条件后立即结束
- 后续条件不再检查
4. 逻辑运算符
&&(并且)
两个条件都成立。
cs
int age = 20;
bool vip = true;
if (age >= 18 && vip)
{
Console.WriteLine("允许进入");
}
||(或者)
满足一个即可。
cs
bool admin = false;
bool manager = true;
if (admin || manager)
{
Console.WriteLine("有权限");
}
!(取反)
bool isLogin = false;
if (!isLogin)
{
Console.WriteLine("请先登录");
}
5. switch 语句
适用于多个固定值判断。
cs
int day = 3;
switch (day)
{
case 1:
Console.WriteLine("星期一");
break;
case 2:
Console.WriteLine("星期二");
break;
case 3:
Console.WriteLine("星期三");
break;
default:
Console.WriteLine("未知");
break;
}
输出:
星期三
6. switch 表达式(C# 8.0+)
更加简洁。
cs
int score = 85;
string result = score switch
{
>= 90 => "优秀",
>= 80 => "良好",
>= 60 => "及格",
_ => "不及格"
};
Console.WriteLine(result);
输出:
良好
7. 三元运算符
简化的 if...else。
语法:
条件 ? 值1 : 值2
示例:
cs
int age = 20;
string msg = age >= 18 ? "成年人" : "未成年人";
Console.WriteLine(msg);
等价于:
cs
string msg;
if (age >= 18)
{
msg = "成年人";
}
else
{
msg = "未成年人";
}
8. 模式匹配(Pattern Matching)
C# 新版本非常常用。
类型判断
cs
object obj = "Hello";
if (obj is string str)
{
Console.WriteLine(str.Length);
}
输出:
5
范围判断
cs
int score = 88;
if (score is >= 80 and < 90)
{
Console.WriteLine("良好");
}
多条件匹配
cs
int age = 25;
if (age is > 18 and < 60)
{
Console.WriteLine("成年人");
}
9. null 判断
传统写法
cs
string name = null;
if (name != null)
{
Console.WriteLine(name);
}
推荐写法
cs
if (name is not null)
{
Console.WriteLine(name);
}
10. 空条件运算符
避免空引用异常。
cs
Person p = null;
Console.WriteLine(p?.Name);
等价于:
cs
if (p != null)
{
Console.WriteLine(p.Name);
}
11. 实际开发案例
用户登录判断
cs
string userName = "admin";
string password = "123456";
if (userName == "admin" &&
password == "123456")
{
Console.WriteLine("登录成功");
}
else
{
Console.WriteLine("用户名或密码错误");
}
成绩等级判断
cs
int score = 92;
string level = score switch
{
>= 90 => "A",
>= 80 => "B",
>= 70 => "C",
>= 60 => "D",
_ => "E"
};
Console.WriteLine(level);
12. 常见错误
错误1:使用赋值符号
❌
cs
if (a = 10)
{
}
正确:
cs
if (a == 10)
{
}
错误2:遗漏花括号
❌
cs
if (age > 18)
Console.WriteLine("成年");
Console.WriteLine("欢迎");
实际上:
cs
if (age > 18)
{
Console.WriteLine("成年");
}
Console.WriteLine("欢迎");
推荐始终使用 {}:
cs
if (age > 18)
{
Console.WriteLine("成年");
Console.WriteLine("欢迎");
}
判断语句选择建议
| 场景 | 推荐 |
|---|---|
| 单条件判断 | if |
| 两种结果 | if...else |
| 多范围判断 | if...else if |
| 固定值匹配 | switch |
| 简单赋值 | ?: |
| 类型判断 | is |
| 范围匹配 | switch 表达式 + Pattern Matching |
| 空值判断 | is not null、?. |
对于现代 C#(C# 8~12),推荐优先使用 switch 表达式 + 模式匹配(Pattern Matching),代码更简洁、可读性更高。