当在null上调用扩展方法时,我总是需要抛出ArgumentNullException
吗? (Enumerable
抛出ArgumentNullException
中的扩展方法。)我想澄清一下。如果答案是“是”和“否”,请提供两种情况。
答案 0 :(得分:5)
如果参数为null
并且您不支持该条件,则需要抛出它。如果这不是问题,则无需抛出异常。人们可能期望在大多数情况下,this
参数的null参数将是不受支持的条件,但决不是始终的情况。
抛出此异常(以及null检查)的需求在扩展方法上与传统方法没有区别。
答案 1 :(得分:2)
我已经看到这种方法通常被定义为扩展方法:
public static bool IsNull(this object item)
{
return item == null;
}
并使用如下:
object o = null;
if (o.IsNull())
return;
因此,在这种特殊情况下,如果参数为null则抛出是没有意义的。扩展方法与任何其他方法没有什么不同,只是语法更加出色。