静态方法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提供的答案)。