You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 11(.NET 7)中String.IsNullOrWhiteSpace()与is null的用法合理性问询

C# 11.0(.NET 7)中这段字符串判空代码的合理性分析

代码合理性结论

你写的这段代码逻辑上是合理的,但存在冗余,可以简化。

详细分析

  1. 冗余点说明
    string.IsNullOrWhiteSpace()方法本身已经包含了null判断逻辑(.NET 7中的实现会先检查参数是否为null并返回true),所以你先通过filePath is null判断一次,再调用该方法,相当于做了两次重复的null检查。虽然不会导致错误,但完全可以简化为:
if (string.IsNullOrWhiteSpace(filePath))
    return false;
  1. 关于你的理解验证
    你提到的两个点都是正确的:
  • is null是语言层面的运算符,无法被重载,它直接判断引用是否为空,对于字符串这类引用类型来说,这是最可靠的空判断方式,不会因为类型重载==运算符而出现意外结果。
  • string.IsNullOrWhiteSpace()内部确实使用了==运算符判断null,而string类型的==是被重载过的(用于比较字符串内容),不过当判断null时,CLR会优先处理引用相等逻辑,所以对于string来说,== null和is null的效果是一致的。但如果是自定义类型重载了==,那== null可能会有不同行为,is null则始终保持引用判断的逻辑。
  1. 额外建议
    如果你的场景是只需要判断null或空字符串(不包含空白字符),可以用string.IsNullOrEmpty();如果需要包含空白字符的判断,就用string.IsNullOrWhiteSpace(),后者覆盖了前者的场景。

内容的提问来源于stack exchange,提问作者user12891798

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:15:58