string.IsNullOrEmpty(string) 与 string.IsNullOrWhiteSpace(string)

2023-11-25

正在使用string.IsNullOrEmpty(string)当检查一个字符串时被认为是不好的做法string.IsNullOrWhiteSpace(string)在 .NET 4.0 及更高版本中?


最佳实践是选择最合适的一种。

.Net Framework 4.0 Beta 2 有一个新的 IsNullOrWhiteSpace() 方法 将 IsNullOrEmpty() 方法概括为还包含其他白色的字符串 除了空字符串之外的空格。

术语“空白”包括所有在计算机上不可见的字符 屏幕。例如,空格、换行符、制表符和空字符串为白色 空格字符*.

参考 :Here

对于性能来说,IsNullOrWhiteSpace 并不理想,但也可以 好的。方法调用将导致较小的性能损失。 此外,IsWhiteSpace 方法本身具有一些间接方法,可以 如果您不使用 Unicode 数据,则将其删除。一如既往,为时过早 优化可能是邪恶的,但它也很有趣。

参考 :Here

检查源代码(参考源.NET Framework 4.6.2)

是否为空

[Pure]
public static bool IsNullOrEmpty(String value) {
    return (value == null || value.Length == 0);
}

为空或空白

[Pure]
public static bool IsNullOrWhiteSpace(String value) {
    if (value == null) return true;

    for(int i = 0; i < value.Length; i++) {
        if(!Char.IsWhiteSpace(value[i])) return false;
    }

    return true;
}

Examples

string nullString = null;
string emptyString = "";
string whitespaceString = "    ";
string nonEmptyString = "abc123";

bool result;

result = String.IsNullOrEmpty(nullString);            // true
result = String.IsNullOrEmpty(emptyString);           // true
result = String.IsNullOrEmpty(whitespaceString);      // false
result = String.IsNullOrEmpty(nonEmptyString);        // false

result = String.IsNullOrWhiteSpace(nullString);       // true
result = String.IsNullOrWhiteSpace(emptyString);      // true
result = String.IsNullOrWhiteSpace(whitespaceString); // true
result = String.IsNullOrWhiteSpace(nonEmptyString);   // false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

string.IsNullOrEmpty(string) 与 string.IsNullOrWhiteSpace(string) 的相关文章

  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 处理右值时的 insert 与 emplace

    std string myString std unordered set
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 假装 .NET 字符串是值类型

    在 NET 中 字符串是不可变的 并且是引用类型变量 这通常会让新的 NET 开发人员感到惊讶 因为他们的行为可能会将它们误认为是值类型对象 然而 除了使用实践StringBuilder对于长连接 尤其是 在循环中 在实践中是否有任何理由需
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • 为什么 JavaScript 中是 [1,2] + [3,4] = "1,23,4" ?

    我想将一个数组的元素添加到另一个数组中 所以我尝试了以下方法 1 2 3 4 它的回应是 1 23 4 到底是怎么回事 The 操作员没有为数组定义 发生的事情是 JavaScript将数组转换为字符串并将它们连接起来 Update 由于这
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 此 jar 包含其签名者证书将在六个月内过期的条目

    我已经以各种方式对我的 jar 进行了签名 但是当我使用以下命令时 我不断收到上述错误消息 jarsigner verify verbose my jar 有没有办法消除这个错误 如果没有重新认证 我的代码会在六个月后停止工作吗 以下是用于
  • 从购物车页面删除 Woocommerce 购物车数量选择器

    我正在尝试从购物车页面删除 Woocommerce 购物车数量选择器 我正在商店存档页面上使用数量输入字段 并将其应用到购物车页面 我怎样才能删除它并且不允许用户更改它 我已尝试使用下面的代码进行以下操作 并从官方 Woocommerce
  • 在 Makefile 中找不到指向的库文件

    我正在尝试编译这个工具 下面是其 Makefile 的开头 CC gcc CFLAGS Wall O2 D TRACES DFLAGS g Wall o0 CPPFLAGS INCLUDES I LDFLAGS LIBRARIES L LD
  • 在 appsettings.json (asp.net core 本地化)中设置文化和 ui-culture?

    我有 asp net core 应用程序 我想要本地化和翻译 v 1 1 0 我希望源代码支持英语和挪威语部署 我发现这可能是一个startup cs配置 RequestLocalizationOptions localizationOpt
  • C 数组可以在元素之间包含填充吗?

    我听说有传言说 在 C 中 包含在结构内部的数组可能在数组元素之间添加了填充 现在显然 任何一对元素之间的填充量都不能变化 或者使用简单的指针算术不可能计算数组中的下一个元素 该谣言还指出 不包含在结构中的数组保证不包含填充 我至少知道那部
  • python、postgresql 中的数据库测试

    如何对使用 postgresql 的 python DAL 进行单元测试 在 sqlite 中 您可以为每个测试创建内存数据库 但对于 postgresql 则不能这样做 我想要一个可用于设置数据库并在测试完成后清理它的库 我使用 Sqla
  • 何时为 JWT 使用 RS256?

    所以 现在我正在构建一个供第三方使用的 API 并且我正在阅读有关 RS256 和 HS256 的内容 我的理解是 两者之间的区别在于 第一个使用公钥进行验证 使用私钥进行签名 而另一个则仅使用一个密钥 因此 如果您使用 RS256 因为您
  • 给自己发送一封电子邮件,但让我回复另一封电子邮件

    我正在使用我的 Web 应用程序平台 node js 上的模块 nodemailer 向使用我的 Web 应用程序的联系页面的某人发送电子邮件给自己 因为 我要向自己发送一封电子邮件 如果我回复该电子邮件 我将再次向自己发送一封电子邮件 而
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • Django:将变量从 get_context_data() 传递到 post()

    变量定义在里面get context view 因为它需要一个id访问正确的数据库对象 class FooView TemplateView def get context data self id kwargs bar Bar objec
  • Click 事件在 IE/Firefox 中触发,但 Chrome 正在放弃事件分配

    我正在调试我的网络应用程序 但遇到了困难 我仅在 Google Chrome 中遇到一种行为 而我的 javascript 无能使我无法找到解决方案 我有一个 ASP 页面 其中包含
  • 配置 pymongo 使用字符串 _id 而不是 ObjectId

    我在用着pymongo用来自不同系统的旧信息播种数据库 我有很多这样的查询 studentId studentsRemote insert price price 在实际的 python 脚本中 studentId作为字符串打印 但在我使用
  • JSF2 复合组件:#{cc.childCount} 和 是否互斥?

    我只是不明白 如果我希望我的复合组件插入子组件 我use
  • 使用 DateJS 仅解析时间字符串

    我正在使用优秀的 但很大 DateJS用于处理我的网络应用程序中的日期和时间的库 我刚刚遇到一些我不知道如何处理的事情 我希望我的用户能够仅输入时间字符串 而不输入日期 但他们应该能够以他们喜欢的任何方式输入它 例如 5 00 pm 17
  • PostgreSQL 相当于 TOP n with TIES: LIMIT “with ties”?

    我正在 SQL Server 中寻找类似的东西 SELECT TOP n WITH TIES FROM tablename 我知道关于LIMIT在 PostgreSQL 中 但是是否存在与上述等效的内容 我只是很好奇 因为它每次都会为我节省
  • CORS:AngularJS + Resteasy 3 + Wildfly

    我正在使用 AngularJS 和 Resteasy 开发一个应用程序 正如预期的那样 我面临着众所周知的问题 XMLHttpRequest cannot load http localhost 8080 No Access Control
  • 如何迭代对象列表?

    我有一个 User 类 其中有一个字符串用户名 我有一个用户列表 我试图使用它在表格中显示
  • 如何知道 RecyclerView 何时完成放置项目?

    我有一个RecyclerView那是在一个里面CardView The CardView高度为 500dp 但我想缩短这个高度 如果RecyclerView较小 所以我想知道当RecyclerView已完成第一次放置其物品 可以设置Recy
  • 下载文本文件而不是在浏览器中打开

    我有一个文本文件 当我点击Download它应该下载并将其保存在我的本地下载路径中 我努力了 window open data txt and header Location data txt 但两者都是自行打开文本文件浏览器 我下载的是t
  • string.IsNullOrEmpty(string) 与 string.IsNullOrWhiteSpace(string)

    正在使用string IsNullOrEmpty string 当检查一个字符串时被认为是不好的做法string IsNullOrWhiteSpace string 在 NET 4 0 及更高版本中 最佳实践是选择最合适的一种 Net Fr