2010-06-07 48 views
0

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

回答

5

如果参数为null且您不支持该条件,则需要抛出它。如果这不是问题,则不需要抛出异常。有人可能会预计在大多数的情况下,this参数的null参数将是一个不受支持的条件,但决不是总是的情况。

在扩展方法中,与传统方法相比,引发此异常(以及用于空检查)的需求没有区别。

2

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

public static bool IsNull(this object item) 
{ 
    return item == null; 
} 

,并像使用:

object o = null; 
if (o.IsNull()) 
    return; 

因此,在这种特殊情况下,它是没有意义的,如果丢参数为null。扩展方法与其他方法没有区别,只是语法更有趣。