有没有理由说NullReferenceException没有给出变量的名称?

Dav*_*ale 10 .net exception

ArgumentNullException有一个ParamName属性来指示哪个参数传递为null.

为什么没有NullReferenceException类似的财产?在.Net中实施技术是否可行?

Jon*_*eet 9

NullReferenceException当CLR尝试导航空引用时,它会抛出A. 这不一定与变量相关联,特别是CLR实际上并不关心它来自何处 - 它只是堆栈上的值.

相比之下,与ArgumentNullException明确地通过代码抛出如:

if (foo == null)
{
    throw new ArgumentNullException("foo");
}
Run Code Online (Sandbox Code Playgroud)

这里没有魔法 - 如果你愿意,你甚至可以给出错误的名字.所以他们真的是非常不同的情况.