关于扩展方法

时间:2010-06-07 18:15:24

标签: c# c#-3.0 extension-methods

当在null上调用扩展方法时,我总是需要抛出ArgumentNullException吗? (Enumerable抛出ArgumentNullException中的扩展方法。)我想澄清一下。如果答案是“是”和“否”,请提供两种情况。

2 个答案:

答案 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则抛出是没有意义的。扩展方法与任何其他方法没有什么不同,只是语法更加出色。