【发布时间】:2009-12-30 01:50:08
【问题描述】:
有人可以向我解释为什么在.NET 中我会写String.IsNullOrEmpty(str) 而不是str.IsNullOrEmpty()?一定有一个合乎逻辑的原因,但我不知道。
你们好像在说
- 您不能从 C#/.NET 中为 null 的对象调用方法(我在 C++ 中这样做,它只是不访问任何成员变量)
- .NET 2.0 中不存在扩展方法
- 微软没有费心更新标准,可能觉得它微不足道
【问题讨论】:
-
有趣的旁注:你实际上可以在 Smalltalk 中做到这一点,因为 nil 也是一个对象(它是 UndefinedObject 的单例实例)。
-
为此目的使用扩展方法是完全错误的,因为它利用了扩展方法的实现细节。您将有效地允许
null.IsNullOrEmpty()成为法律声明,即使它不是这样编译的。 -
完全相同的副本:*.com/questions/734372
-
George Stocker:我没有问为什么没有 IsNotNullOrEmpty。我问为什么我不能写“字符串”。IsNotNullOrEmpty