C# 关于扩展方法

C# 关于扩展方法,c#,c#-3.0,extension-methods,C#,C# 3.0,Extension Methods,当对null调用扩展方法时,是否总是需要抛出ArgumentNullException?(Enumerable中的扩展方法抛出ArgumentNullException)我想对此进行澄清。如果答案同时为“是”和“否”,请同时给出这两种情况。如果参数为null,并且您不支持该条件,则需要抛出它。如果这不是问题,就没有必要抛出异常。在大多数情况下,此参数的null参数可能是不可支持的条件,但决不是总是这样 在扩展方法中引发此异常(以及空检查)的需要与在传统方法中没有什么不同。我见过这种方法通常被定义

当对null调用扩展方法时,是否总是需要抛出
ArgumentNullException
?(Enumerable中的扩展方法抛出
ArgumentNullException
)我想对此进行澄清。如果答案同时为“是”和“否”,请同时给出这两种情况。

如果参数为
null,并且您不支持该条件,则需要抛出它。如果这不是问题,就没有必要抛出异常。在大多数情况下,
参数的null参数可能是不可支持的条件,但决不是总是这样


在扩展方法中引发此异常(以及空检查)的需要与在传统方法中没有什么不同。

我见过这种方法通常被定义为扩展方法:

public static bool IsNull(this object item)
{
    return item == null;
}
用起来像:

object o = null;
if (o.IsNull())
  return;
因此,在这种特殊情况下,如果参数为null,则抛出是没有意义的。扩展方法与任何其他方法都没有区别,只是语法更为奇特