假设我们有示例代码(VS2015,WinForms,.Net 4.6.1):

List<int> items = new List<int>();
private async Task test(int id)
{
    id = 1;
    int id_real = id;

    int index = items.FindIndex(x => x == id);
}

private async void button1_Click(object sender, EventArgs e)
{
    await test(0);
}

现在“功能”:
.net - 在Visual Studio 2015中调试时值不正确-LMLPHP

那怎么可能?有趣的部分-只是Visual Studio watcher问题,运行时结果仍然正确。

现在,我知道它仅发生在VS2015中,并且是这种行为的原因-测试方法中的最后一个字符串。

最佳答案

请启用TOOLS-> Options-> Debugging下的“Use Managed Compatibility Mode”,然后重新调试您的应用程序,我认为您将在VS2013或VS2017的调试器窗口中获得正确的结果。

.net - 在Visual Studio 2015中调试时值不正确-LMLPHP

更新:

即使我们可以解决此问题,我也向连接报告中报告了此问题:

https://connect.microsoft.com/VisualStudio/feedbackdetail/view/3135000/incorrect-value-while-debugging-in-visual-studio-2015

10-06 10:47
查看更多