C# 判断语句详解(if、switch、三目运算符、Null 条件运算符)

在 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 关键字)也可以告诉我 👍

相关推荐
小峥降临1 天前
Rokid UXR 的手势追踪虚拟中更真实的手实战开发【含 工程源码 和 最终完成APK】
c#
晨星shine5 天前
GC、Dispose、Unmanaged Resource 和 Managed Resource
后端·c#
用户298698530145 天前
.NET 文档自动化:Spire.Doc 设置奇偶页页眉/页脚的最佳实践
后端·c#·.net
用户3667462526745 天前
接口文档汇总 - 2.设备状态管理
c#
用户3667462526745 天前
接口文档汇总 - 3.PLC通信管理
c#
Ray Liang6 天前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Scout-leaf9 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
用户298698530149 天前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
mudtools10 天前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的11 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书