在调试本地函数时,我在VS 2017的调试器中看到了一些奇怪的东西。
请查看下面的代码,并在包含对if
的调用的string.IsNullOrWhitespace()
语句中添加断点。
当调试器到达指示的行时,按F10。出于某种原因,控制转到下一行:return false;
,但该方法并不真正返回false
(也不应该)。再次按F10可使控制下降
致电return LocalContainsG()
。
为什么在点击断点后按F10时控件会转到return false;
语句?这对我来说毫无意义。
internal class Program {
private static void Main() {
System.Console.WriteLine("Contains as G? " + new Program().ContainsG("pizza"));
}
bool ContainsG(string text) {
if (string.IsNullOrWhiteSpace(text)) // PUT BREAKPOINT HERE THEN PRESS F10
return false; // Debugger stops here!!!
bool LocalContainsG(string target) {
return target.Contains("G");
}
return LocalContainsG(text);
}
}