有人能向我解释为什么在.NET中我会写String.IsNullOrEmpty(str)而不是str.IsNullOrEmpty()吗?一定有合理的理由,但我不知道。
听起来你们是在说
发布于 2009-12-30 01:53:29
如果IsNullOrEmpty是一个实例方法,那么对一个空实例调用它会抛出一个NullReferenceException,而不是像您想要的那样返回false。
它可能是一个扩展方法,但可能会让人感到困惑--它看起来像一个实例方法,但却不像一个实例方法。
发布于 2009-12-30 01:52:37
如果str为null,它将没有任何可访问的方法,因为没有对象的实例。如果尝试调用空对象上的方法,就会得到一个空引用异常。
String.IsNullOrEmpty是静态的,所以它总是可以用来测试字符串对象。
我想您可能会认为让str.IsEmpty很方便(就像乔纳森说的那样,您可以为string对象创建一个延拓法来处理这个问题),但实际上调用String.IsNullOrEmpty(str)也同样容易,并且涵盖了这两种情况。尽管它们并不相同,但大多数人在处理字符串值时(从业务逻辑和验证字符串存在值的角度)将它们等同起来。
发布于 2009-12-30 01:53:52
String.IsNullOrEmpty是一种类方法。
如果str是Nothing (空的),那么您就不能对它调用一个方法。只能调用对象上的实例方法。
https://stackoverflow.com/questions/1978000
复制相似问题