我是 C# 的新手。我打了一个断点并按下F10or F11。
应该使用哪个键进行编译?
请帮帮我。你能解释一下这个键的作用吗?
F10("step over") 不会进一步下降到调用堆栈中。它移动到当前函数的下一行。
F11("step into") 深入到被调用的函数。
void function1()
{
function2();
function3();
}
如果上断点function2()
,F10就会前进到该行function3()
。 F11会推进到第一行里面function2
。
如果您是 Visual Studio 的绝对初学者,请说 Visual Studio 2017:
功能键 F10 和 F11 有助于跟踪代码中的执行路径,从而有助于检查中间结果和调试代码。
您需要在自己的代码中的任何行(在方法(函数)内)放置一个“断点”。在执行程序之前,只需单击代码窗口的最左边框对应的代码语句,您需要从该代码语句开始调试。您可以在代码中放置多个断点。
现在执行(运行)程序,它将在您的第一个断点处自动运行。现在继续按 F10 从一个语句移动到另一个语句以继续执行程序(按顺序)。
但是,如果您当前处于包含函数(方法)调用的语句中,例如FindSum(a,b);
现在如果您按 F11,它将带您到函数的第一行FindSum(a,b)
并继续。请注意,当您的当前语句涉及函数调用时按 F10,它将只执行该函数(而不会将您带到函数体中的语句)并移至代码中的下一行。
简而言之,按 F11 会将您带到包括函数体在内的每一行,但 F10 允许从一行移动到下一行。
F10一步一步调试。如果您可以调用此类或任何系统类中的任何函数,则F10不要转到该类或方法的定义部分,它们只是逐步进行,但是如果您可以F11用于调试,则它可以转到函数的定义部分或班级。
F10-> 执行下一行代码,但不执行任何函数调用(Step Over)。
F11-> 每次执行代码一条语句,然后执行到函数调用(Step Into)。
一个例子。假设我们有下面的代码片段
使用系统;
命名空间 ConsoleApplication1 { 类程序 { 静态无效 Main(string[] args) {
var add = AddFunction(10,20); Console.WriteLine(添加); Console.ReadKey(); }
static int AddFunction(int a,int b)
{
return a+b;
}
}
}
现在在 var add = AddFunction(10,20); 处设置断点
如果我们执行 Step Over(或 F10),那么在该行之后,控件将转到下一行,即 Console.WriteLine(add); 其次是 Console.ReadKey(); 最后 } 最后返回值 0 给 OS。
如果我们执行 Step Into(或 F11),那么在 var add = AddFunction(10,20); 之后 ,控件将进入 AddFunciton 的调用函数实现,即 return a+b 和之后的 Console.WriteLine(add); 等等。
希望这会有所帮助。
F10=>Step Over(去执行函数的每一行)
F11=>Step Into(去执行每个函数)