静态方法String.IsNullOrEmpty
是在 .NET Framework 2.0 版中引入的。扩展方法与 LINQ 一起在 .NET Framework 3.5 版中引入。因此微软在引入IsNullOrEmpty
.
当然,IsNullOrEmpty
不能是 的实例方法String
,因为您不能在引用上调用方法是null
。但是,您可以在此类引用上调用扩展方法,因为扩展方法语法只是静态方法调用的语法糖。
让我们假设这IsNullOrEmpty
是一个扩展方法。然后你可以这样称呼它:
string s = null;
bool result = s.IsNullOrEmpty();
在评论中,有人假装这个调用会抛出一个NullReferenceException
. 扩展方法将像这样声明:
public static class StringExtensions
{
public static bool IsNullOrEmpty(this string s)
{
return s == null || s.Length == 0;
}
}
...并像这样使用...
string s = null;
bool result = s.IsNullOrEmpty();
...这只是...的语法糖
string s = null;
bool result = StringExtensions.IsNullOrEmpty(s);
...因此,不会抛出异常。这样做是否是一个好主意是另一个问题(请参阅下面的usr提供的答案)。