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 小时前
C#-使用OpenTK渲染3D模型
c#·opentk·glcontrol
游乐码4 小时前
c#封装成员变量和成员方法和访问修饰符
开发语言·c#
Never_Satisfied4 小时前
在c#中,Jint的AsString()和ToString()的区别
服务器·开发语言·c#
Never_Satisfied4 小时前
在c#中,获取文件的大小
java·开发语言·c#
weixin_468466855 小时前
PyTorch导出ONNX格式分割模型及在C#中调用预测
人工智能·pytorch·深度学习·c#·跨平台·onnx·语义分割
光泽雨13 小时前
C# 中 Assembly 类详解
开发语言·c#
少控科技13 小时前
C#基础训练营 - 02 - 运算器
开发语言·c#
两千次19 小时前
图像的处理 图片裁剪工具方法 图片按比例缩放的工具方法
c#
Sunsets_Red19 小时前
浅谈随机化与模拟退火
java·c语言·c++·python·算法·c#·信息学竞赛