首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么是String.IsNullOrEmpty(str)而不是str.IsNullOrEmpty()?

为什么是String.IsNullOrEmpty(str)而不是str.IsNullOrEmpty()?
EN

Stack Overflow用户
提问于 2009-12-30 01:50:08
回答 6查看 2.9K关注 0票数 9

有人能向我解释为什么在.NET中我会写String.IsNullOrEmpty(str)而不是str.IsNullOrEmpty()吗?一定有合理的理由,但我不知道。

听起来你们是在说

  1. 不能从C#/.NET中为null的对象调用方法(我在C++中这样做,它只是不访问任何成员vars)
  2. .NET 2.0中不存在扩展方法
  3. 微软没有费心去更新这些标准,可能觉得这是微不足道的。
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-12-30 01:53:29

如果IsNullOrEmpty是一个实例方法,那么对一个空实例调用它会抛出一个NullReferenceException,而不是像您想要的那样返回false。

它可能是一个扩展方法,但可能会让人感到困惑--它看起来像一个实例方法,但却不像一个实例方法。

票数 26
EN

Stack Overflow用户

发布于 2009-12-30 01:52:37

如果str为null,它将没有任何可访问的方法,因为没有对象的实例。如果尝试调用空对象上的方法,就会得到一个空引用异常。

String.IsNullOrEmpty是静态的,所以它总是可以用来测试字符串对象。

我想您可能会认为让str.IsEmpty很方便(就像乔纳森说的那样,您可以为string对象创建一个延拓法来处理这个问题),但实际上调用String.IsNullOrEmpty(str)也同样容易,并且涵盖了这两种情况。尽管它们并不相同,但大多数人在处理字符串值时(从业务逻辑和验证字符串存在值的角度)将它们等同起来。

票数 9
EN

Stack Overflow用户

发布于 2009-12-30 01:53:52

String.IsNullOrEmpty是一种类方法。

如果str是Nothing (空的),那么您就不能对它调用一个方法。只能调用对象上的实例方法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1978000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档