在调试时使用“设置下一条语句”时,即跳过某些语句时,有时会发生奇怪的事情:在变量的赋值上抛出NullReferenceException
。
当我跳过一条语句会导致引发异常(并可能在其他地方捕获该异常)时,似乎会发生问题。例如,我可能首先跳过了一个对象的构造,后来又跳过了对该对象的成员访问(该访问将抛出其自己的NullReferenceException
)。
请注意,在任何地方都没有在null引用上访问任何成员的信息。似乎正在发生的事情是,正在对一个变量的赋值,该变量的声明已被跳过(我猜是通过某种优化)。通过逐步操作,我跳过了一个已经得出结论是不可避免的异常,因此从未期望使用该变量并且尚未声明该变量。
我声明上述原因,因为当我选择以下任何一种方法时问题都消失了:
我的解释正确吗?
哪个进程(例如JIT)导致此行为,为什么?