它ArgumentNullException有一个ParamName属性来指示哪个参数传递为null.
为什么没有NullReferenceException类似的财产?在.Net中实施技术是否可行?
NullReferenceException当CLR尝试导航空引用时,它会抛出A. 这不一定与变量相关联,特别是CLR实际上并不关心它来自何处 - 它只是堆栈上的值.
相比之下,与ArgumentNullException它明确地通过代码抛出如:
if (foo == null)
{
throw new ArgumentNullException("foo");
}
Run Code Online (Sandbox Code Playgroud)
这里没有魔法 - 如果你愿意,你甚至可以给出错误的名字.所以他们真的是非常不同的情况.