假设我们有示例代码(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);
}
现在“功能”:
那怎么可能?有趣的部分-只是Visual Studio watcher问题,运行时结果仍然正确。
现在,我知道它仅发生在VS2015中,并且是这种行为的原因-测试方法中的最后一个字符串。
最佳答案
请启用TOOLS-> Options-> Debugging下的“Use Managed Compatibility Mode”,然后重新调试您的应用程序,我认为您将在VS2013或VS2017的调试器窗口中获得正确的结果。
更新:
即使我们可以解决此问题,我也向连接报告中报告了此问题:
https://connect.microsoft.com/VisualStudio/feedbackdetail/view/3135000/incorrect-value-while-debugging-in-visual-studio-2015