C#中IsNullOrEmpty和IsNullOrWhiteSpace的使用方法有什么区别?

简介: C#中IsNullOrEmpty和IsNullOrWhiteSpace的使用方法有什么区别?

前言

今天我们将探讨C#中两个常用的字符串处理方法:IsNullOrEmpty和IsNullOrWhiteSpace。这两个方法在处理字符串时非常常见,但是它们之间存在一些细微的区别。在本文中,我们将详细解释这两个方法的功能和使用场景,并帮助您更好地理解它们之间的区别。

IsNullOrEmpty

作用

该方法用于检查字符串是否为null或空字符串("")。如果字符串为null或长度为0,返回true;否则返回false。这个方法只关注字符串的长度,不考虑其中的空白字符。

源码实现

/// <summary>
    /// 判断字符串是否为null或者为空字符串
    /// </summary>
    /// <param name="value">字符串</param>
    /// <returns></returns>
    public static bool IsNullOrEmpty([NotNullWhen(false)] string? value)
    {
        return value == null || value.Length == 0;
    }

示例

public static void Main(string[] args)
    {
        string str1 = null;
        string str2 = "";
        string str3 = " ";
        string str4 = "追逐时光者";
        Console.WriteLine(IsStringNullOrEmpty(str1));// 输出:True
        Console.WriteLine(IsStringNullOrEmpty(str2));// 输出:True
        Console.WriteLine(IsStringNullOrEmpty(str3));// 输出:False
        Console.WriteLine(IsStringNullOrEmpty(str4));// 输出:False
    }
    public static bool IsStringNullOrEmpty(string str)
    {
        return string.IsNullOrEmpty(str);
    }

IsNullOrWhiteSpace

作用

该方法用于检查字符串是否为null、空字符串("")或只包含空白字符。如果字符串为null、长度为0或只包含空白字符(例如空格、制表符、换行符),返回true;否则返回false。与IsNullOrEmpty不同,IsNullOrWhiteSpace会考虑字符串中的空白字符。

源码实现

/// <summary>
    /// 字符串是否为null、空字符串或只包含空白字符[(空格、制表符、换行符等空白字符)]
    /// </summary>
    /// <param name="value">字符串</param>
    /// <returns></returns>
    public static bool IsNullOrWhiteSpace([NotNullWhen(false)] string? value)
    {
        if (value == null) return true;
        for (int i = 0; i < value.Length; i++)
        {
            //判断每个字符是否为空白字符,如果存在任何一个非空白字符,即字符不是空格、制表符或换行符等空白字符,
            //那么条件 !char.IsWhiteSpace(value[i]) 就会为真,此时立即返回 false,表示该字符串不是空字符串。
            if (!char.IsWhiteSpace(value[i])) return false;
        }
        return true;
    }

示例

public static void Main(string[] args)
    {
        string str1 = null;
        string str2 = "";
        string str3 = " ";
        string str4 = "追逐时光者";
        Console.WriteLine(IsStringNullOrWhiteSpace(str1));// 输出:True
        Console.WriteLine(IsStringNullOrWhiteSpace(str2));// 输出:True
        Console.WriteLine(IsStringNullOrWhiteSpace(str3));// 输出:True
        Console.WriteLine(IsStringNullOrWhiteSpace(str4));// 输出:False
    }
    public static bool IsStringNullOrWhiteSpace(string str)
    {
        return string.IsNullOrWhiteSpace(str);
    }


加入DotNetGuide技术交流群

在DotNetGuide技术交流群中可以结识更多志同道合的开发者,甚至可能与其他开发者合作完成有趣的项目。通过这个群组,我们希望能够搭建一个积极向上、和谐友善的.NET技术交流平台,为广大.NET开发者带来更多的价值。

欢迎加入DotNetGuide技术交流群👉

相关文章
|
5月前
|
C#
C#学习相关系列之yield和return的区别
C#学习相关系列之yield和return的区别
|
5月前
|
C#
C#中IsNullOrEmpty和IsNullOrWhiteSpace的区别?
C#中IsNullOrEmpty和IsNullOrWhiteSpace的区别?
|
5月前
|
C#
C#系列之ref和out的区别
C#系列之ref和out的区别
|
4月前
|
存储 安全 Java
程序与技术分享:C#值类型和引用类型的区别
程序与技术分享:C#值类型和引用类型的区别
34 0
|
1月前
|
C# 索引
C# 一分钟浅谈:接口与抽象类的区别及使用
【9月更文挑战第2天】本文详细对比了面向对象编程中接口与抽象类的概念及区别。接口定义了行为规范,强制实现类提供具体实现;抽象类则既能定义抽象方法也能提供具体实现。文章通过具体示例介绍了如何使用接口和抽象类,并探讨了其实现方式、继承限制及实例化差异。最后总结了选择接口或抽象类应基于具体设计需求。掌握这两者有助于编写高质量的面向对象程序。
64 5
|
2月前
|
C#
C#中的overload,overwrite,override的语义区别
以上概念是面向对象编程中实现多态性和继承的重要基石。理解它们之间的区别对于编写清晰、可维护的代码至关重要。
72 7
|
5月前
|
C#
c#一文读懂continue、return、break区别
c#一文读懂continue、return、break区别
41 0
|
5月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
169 3
|
5月前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
181 3
|
10天前
|
API C#
C# 一分钟浅谈:文件系统编程
在软件开发中,文件系统操作至关重要。本文将带你快速掌握C#中文件系统编程的基础知识,涵盖基本概念、常见问题及解决方法。文章详细介绍了`System.IO`命名空间下的关键类库,并通过示例代码展示了路径处理、异常处理、并发访问等技巧,还提供了异步API和流压缩等高级技巧,帮助你写出更健壮的代码。
24 2