我遇到了Visual Studio作为调试器的奇怪行为:当NullRefereneException
发生时,调试器指向运算符,而这种异常永远不会出现。我的代码非常基本:
{
for (int i = 0; i < employmentAccounts1.Count(); i++)
employmentAccountsCommon[i] = (object)employmentAccounts1[i];
}
调试器指向运算符i++
,请参见屏幕。
此时i
变量的值为0,而不是null。考虑到此代码片段,i
永远不会变为null。employmentAccounts1.Count()
的值为3,错误发生在周期的第二次通过时(如前所述,当i
仍然为0时)
这是什么这是Visual Studio中的一个错误吗?我第一次在Windows 7和Visual Studio 2008上遇到这种行为。假设这是一个错误,我安装了Windows 10和Visual Studio 2022社区版。但现在的行为似乎是相同的。所以,这是什么?如果这是一个错误,它是如何生存这么久的?如果这不是一个bug,那么这是什么,以及如何修改或解决这种行为?换句话说,如何强制Visual Studio指向正确的代码行?由于这种行为,我现在无法调试我的应用程序。有人能帮忙吗?
1条答案
按热度按时间tjrkku2a1#
既然没有人愿意回答这个问题,我想这是我的责任。Visual Studio调试器指向错误语句作为错误源的情况不是错误,而是一个功能。因为当代码在优化编译时,很难确定正确的错误源。解决方案是,为了调试,编译代码而不优化。就是这样,如果我正确理解了我的受访者