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

相关推荐
宝桥南山4 分钟前
Azure - 尝试一下使用Azure Developer CLI去部署应用程序
microsoft·ai·微软·c#·aigc·azure
OctShop大型商城源码25 分钟前
C#.NET多商户商城系统源码_OctShop:技术与机遇的融合
c#·.net·多商户商城系统源码·商城系统源码
张人玉38 分钟前
VisionPro 书页查找工具 学习笔记
c#·机器视觉·vsionpro
xiaoshuaishuai81 小时前
C# 克隆Git仓库
服务器·windows·c#
rockey62710 小时前
AScript函数体系详解
c#·.net·script·eval·expression·function·动态脚本
吴可可12318 小时前
C#合并首尾相连多段线实战
算法·c#
钮钴禄·爱因斯晨20 小时前
聚焦操作系统中的PV操作
数据库·算法·系统架构·c#
willhuo20 小时前
# 自动化数据采集技术研究与实现:基于Playwright的抖音网页自动化方案
运维·selenium·c#·自动化·chrome devtools·webview
xiaoshuaishuai821 小时前
C# 实现不掉线的CRM
开发语言·c#
筱璦1 天前
C#期货分仓、策略交易模拟演示系统(含资源下载)
开发语言·c#·策略模式·量化交易·期货交易