您的位置:首页 > 手游攻略 > 在 C# 中“非空”(Not Null / Not Empty)的概念和最佳实践实用指南

在 C# 中“非空”(Not Null / Not Empty)的概念和最佳实践实用指南

作者:互联网  时间: 2026-10-23 17:00:01  

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“在 C# 中“非空”(Not Null / Not Empty)的概念和……”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

理解这一步时,在 C# 里,“非空”(Not Null / Not Empty)的概念很清晰,同时且随着 C# 版本的迭代,语法也变得越来越优雅。

C# 中的“空”主要分为两种:引用为空(null) 和 字符串内容为空(Empty)。以下是 C# 中处理非空校验的几种常用场景和最佳实践:

1. 判断对象/变量非空(Not Null)

从实现思路看,这是最基础的判断,确保对象存在,防止抛出 NullReferenceException。

  • 传统写法:
    if (obj != null) 
    {
        // 安全使用 obj
    }
  • C# 7.0+ 模式匹配(建议):
    if (obj is not null) // 比 != null 更简洁,且在泛型中更安全
    {
        // 安全使用 obj
    }

2. 判断字符串非空(Not Empty / Not NullOrEmpty)

从实现思路看,字符串是 C# 中最特殊的类型,它既可能是 null,也可能是 ""。

  • 仅判断不为空字符串(前提是确定它不是 null):
    if (str != "") // 或者 str.Length > 0
  • 判断既不是 null,也不是空字符串(最常用):
    if (!string.IsNullOrEmpty(str)) // 等价于 str != null && str != ""
  • 判断既不是 null,也不是空字符串,也不是纯空格:
    if (!string.IsNullOrWhiteSpace(str)) // 强烈推荐用于处理用户输入

3. 可空值类型(Nullable Value Types)

对于 int?, DateTime? 等结构体,它们能够为 null。

int? age = null;
if (age.HasValue) // 判断非空
{
    int realAge = age.Value; // 安全获取值
}
// 或者使用 C# 7.0+ 的模式匹配
if (age is int realAge)
{
    // realAge 已经是一个安全的 int 值
}

4. 空条件运算符(Null-conditional Operator)

实际处理时,你只需在“非空”时调用方法或拿到属性时,能够采用 ?.,这能极大简化代码:

// 如果 person 非空,且 Address 非空,才获取 City;否则返回 null
string city = person?.Address?.City;
// 如果 list 非空,才获取 Count,否则返回 0
int count = list?.Count ?? 0;

5. 参数级别的非空校验(C# 11+ 新特性)

实际处理时,若你在方法开头需校验参数是否为空,C# 11 引入了 ArgumentNullException.ThrowIfNull,一行代码搞定:

public void ProcessData(string data)
{
    ArgumentNullException.ThrowIfNull(data); // 如果 data 为 null,直接抛出异常
    // 下面的代码可以放心使用 data,无需再判空
}

总结建议:在 C# 里,尽量避免手写 if (str != null && str != "") 这种冗长的代码。对于字符串,无脑采用 !string.IsNullOrWhiteSpace();对于普通对象,采用 is not null;对于方法参数,采用 ArgumentNullException.ThrowIfNull()。

相关资讯

最新游戏

更多

Copyright©2010-2019. All rights reserved | 波波三国游戏官网|[email protected]

备案编号:湘ICP备2022015115号-4