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

C#中`s is null or ""`判空写法与string.IsNullOrEmpty有何区别?

问题解答

首先明确:s is null or ""是C# 9.0版本新增的官方语法特性,属于模式匹配中的逻辑模式,并非个人特殊编码习惯。

两种写法的核心差异

  • 版本依赖不同
    • s is null or ""最低要求C# 9.0及对应.NET版本(.NET 5+、.NET Core 3.0+可通过配置支持),旧版本编译器无法识别该语法
    • string.IsNullOrEmpty是.NET Framework 2.0时期就推出的基础API,所有主流.NET版本都原生支持,兼容性更好
  • 功能表现
    绝大多数场景下二者判断结果完全等价:string.IsNullOrEmpty的内部实现逻辑就是return s == null || s.Length == 0;,和null判断+空字符串判断的逻辑完全一致,没有功能层面的区别
  • 性能表现
    二者没有可观测的性能差异:模式匹配属于编译期语法糖,编译器会把s is null or ""优化成和string.IsNullOrEmpty几乎完全一致的机器码,没有额外运行时开销,不存在谁更高效的说法
  • 扩展性差异
    模式匹配写法的扩展性更强,如果你需要额外增加判断条件,比如同时匹配特定占位字符串,可以直接写成s is null or "" or "undefined",不需要嵌套多个判断;而string.IsNullOrEmpty只能完成固定的判空+判空字符串逻辑

选型建议

如果你的项目需要兼容旧版本.NET Framework、或者团队编码规范要求统一使用工具类API,优先选string.IsNullOrEmpty;如果是C# 9.0以上的新项目,两种写法都可以,根据团队习惯选择即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:36:05