获取 NullReferenceException 的变量名
Getting the variable name for NullReferenceException
NullReferenceException
的堆栈跟踪信息非常少,它们仅包括方法名称和调用堆栈。方法中的任何变量都可以为空,并且当错误在开发机器上不可重现时很难调试。
您是否知道获取有关该错误的更多信息的方法,也许是获取变量名称?或者你有更好的调试方法吗?
并非总是可以跟踪该名称(它可能是一个表达式)。
在可能的情况下,它会产生不可接受的开销。考虑到运行时必须跟踪几乎所有引用变量,这将是昂贵的并且禁止各种优化。
另请参阅我在 Inspect the managed stack 上的回答及其引用的博客 post。
简单的解决方案是在您自己的代码中构建更一致的空值检查:
void Foo(Bar b)
{
if (b == null) throw new ArgumentNullException(nameof(b));
...
}
NullReferenceException
的堆栈跟踪信息非常少,它们仅包括方法名称和调用堆栈。方法中的任何变量都可以为空,并且当错误在开发机器上不可重现时很难调试。
您是否知道获取有关该错误的更多信息的方法,也许是获取变量名称?或者你有更好的调试方法吗?
并非总是可以跟踪该名称(它可能是一个表达式)。
在可能的情况下,它会产生不可接受的开销。考虑到运行时必须跟踪几乎所有引用变量,这将是昂贵的并且禁止各种优化。
另请参阅我在 Inspect the managed stack 上的回答及其引用的博客 post。
简单的解决方案是在您自己的代码中构建更一致的空值检查:
void Foo(Bar b)
{
if (b == null) throw new ArgumentNullException(nameof(b));
...
}