假设我有一个扩展方法
public static T TakeRandom<T>(this IEnumerable<T> e)
{
...
为了验证论点 e,我应该:
A) if (e == null) throw new NullReferenceException()
B) if (e == null) throw new ArgumentNullException("e")
C) 不检查 e
共识是什么?
我的第一个想法是始终验证参数,因此抛出了 ArgumentNullException。话说回来,既然 TakeRandom() 变成了 e 的一个方法,或许它应该是一个 NullReferenceException。但是如果它是 NullReferenceException,如果我尝试在 TakeRandom() 中使用 e 的成员,无论如何都会抛出 NullReferenceException。
也许我应该使用 Reflector 并找出框架的作用。