Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么VS调试器不在初始化变量处停止?_C#_.net_Visual Studio_Debugging_Visual Studio 2012 - Fatal编程技术网

C# 为什么VS调试器不在初始化变量处停止?

C# 为什么VS调试器不在初始化变量处停止?,c#,.net,visual-studio,debugging,visual-studio-2012,C#,.net,Visual Studio,Debugging,Visual Studio 2012,当我在未初始化的变量中设置断点并运行项目时,我发现在运行时调试器不会停在该行,而是停在未初始化变量的下一行 我还注意到,在运行时断点也显示在下一行 例如: string strTest; // Set breakpoint here. Console.WriteLine("This is test"); // The debugger stops here, not in the line above. strTest = "Hi I am Test"; // Initialize string

当我在未初始化的变量中设置断点并运行项目时,我发现在运行时调试器不会停在该行,而是停在未初始化变量的下一行

我还注意到,在运行时断点也显示在下一行

例如:

string strTest; // Set breakpoint here.
Console.WriteLine("This is test"); // The debugger stops here, not in the line above.
strTest = "Hi I am Test"; // Initialize string variable here.

这是预期的行为吗?我的意思是为什么VS调试器不在未初始化的变量处停止?以及为什么在运行时断点会移动到下一行未初始化的变量?

变量声明不会生成代码。因此,没有代码可以在该行中断。

变量声明不会生成代码。因此,没有代码可以在这行代码之前中断。

它可能正在进行优化out@OMGtechy没有可优化的代码。如答案中所述,声明变量在编译代码中不起任何作用。在使用变量之前声明变量纯粹是高级语言的构造。在Visual Studio 2015预览版中,最好不要在变量声明处设置断点。@Servy,声明变量在编译代码中没有任何作用:这不是真的;它在堆栈上保留了一些空间,您可以在IL中看到它。但它不是一个语句,所以没有与之相关的可执行代码。它可能正在被优化out@OMGtechy没有可优化的代码。如答案中所述,声明变量在编译代码中不起任何作用。在使用变量之前声明变量纯粹是高级语言的构造。在Visual Studio 2015预览版中,最好不要在变量声明处设置断点。@Servy,声明变量在编译代码中没有任何作用:这不是真的;它在堆栈上保留了一些空间,您可以在IL中看到它。但它不是一个声明,所以没有与之相关的可执行代码。不知道为什么3年后你又回到这个讨论中,删除了你所有的评论。。。让它看起来像是我在自言自语,所以我也删除了我的;不知道为什么三年后你又回到这个讨论中,删除了你所有的评论。。。让它看起来像是我在自言自语,所以我也删除了我的;