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

相关推荐
贾斯汀frank13 小时前
C# 15 类型系统改进:Union Types
开发语言·windows·c#
时代的狂14 小时前
如何理解 C# 的 async 和 await
c#·.netcore·async·await
xiaoshuaishuai817 小时前
C# AI实现PR处理、单元测试
开发语言·c#·log4j
LONGZHIQIN17 小时前
C#基础复习笔记
开发语言·笔记·c#
时代的狂20 小时前
如何理解 C#/.NET 的依赖注入与生命周期
c#·.net·依赖注入·控制反转
品尚公益团队20 小时前
C#在asp.net网页开发中的带cookie登录实现
前端·c#·asp.net
吴可可12320 小时前
C#自定义CAD多段线零件实体
c#
CallmeFoureyes20 小时前
使用 C# 提取 Word 文档中的表格数据
开发语言·c#·word
思麟呀20 小时前
在C++基础上理解CSharp-7
java·jvm·c++·c#
杰佛史彦明11 天前
ElasticSearch中的分词器详解
大数据·elasticsearch·c#