通过查看代码的调用层次结构,可以导航到所选方法、属性或构造函数的所有调用,有时也可以从中选择的方法、属性或构造函数导航。 这使你能够更好地了解代码的流动方式,并评估对代码的更改的影响。 可以检查多个级别的代码,以查看方法调用的复杂链和代码的其他入口点。 这使你可以浏览所有可能的执行路径。
在 Visual Studio 中,可以在设计时查看调用层次结构。 这意味着无需设置断点并启动调试器才能查看运行时调用堆栈。
使用“调用层次结构”窗口
若要显示 “调用层次结构 ”窗口,请在代码编辑器中右键单击方法、属性或构造函数调用的名称,然后选择“ 查看调用层次结构”。
成员名称显示在 “调用层次结构 ”窗口中的树视图窗格中。 如果展开成员节点、 “调用成员名称”和“C++”,将显示 “来自成员名称的呼叫”子节点。
对于C++代码,可以看到对成员和成员的显式调用:
注释
在C++代码中,可以隐式调用成员函数,例如构造函数或类型转换方法;这些隐式调用不一定包含在列表中。
对于 C# 和 Visual Basic 代码,可以看到对成员的调用,但看不到来自以下对象的调用:
如果展开“ 调用到 ”节点,则会显示调用所选成员的所有成员。
对于C++,f 展开“ 从 节点调用”,将显示所选成员调用的所有成员(显式)。
然后,可以展开每个调用成员以查看其 “调用到”,对于C++,请从节点 调用 。 这使你可以导航到调用方堆栈,如下图所示:
对于定义为虚拟或抽象的成员,将显示 Overrides 方法名称 节点。 对于接口成员,将显示 一个 Implements 方法名称 节点。 这些可展开节点与 “调用” 和 “从节点调用 ”位于同一级别。
工具栏上的 “搜索范围 ”框包含 “我的解决方案”、“ 当前项目”和 “当前文档”选项。
在 “调用层次结构 ”树视图窗格中选择子成员时:
“ 调用层次结构 详细信息”窗格显示从父成员调用该子成员的所有代码行。
“ 代码定义 ”窗口(如果打开)显示所选成员的代码(仅C++)。 有关此窗口的详细信息,请参阅 “查看代码结构”。
注释
调用层次结构功能找不到方法组引用,其中包括将方法添加为事件处理程序或分配给委托的位置。 若要查找对方法的所有引用,可以使用 “查找所有引用 ”命令。
快捷菜单项
下表描述了在树视图窗格中右键单击节点时可用的多个快捷菜单选项。
上下文菜单项 | DESCRIPTION |
---|---|
添加为新根 | 将所选节点作为新的根节点添加到树视图窗格。 这使你能够将注意力集中在特定的子树上。 |
删除根 | 从树视图窗格中删除所选根节点。 此选项仅适用于根节点。 还可以使用 “删除根 ”工具栏按钮删除所选根节点。 |
转到定义 | 在所选节点上运行“转到定义”命令。 这会导航到成员调用或变量定义的原始定义。 若要运行“转到定义”命令,还可以双击所选节点或按所选节点上的 F12。 |
查找所有引用 | 在所选节点上运行“查找所有引用”命令。 这会查找项目中引用类或成员的所有代码行。 还可以使用 SHIFT+F12 在所选节点上运行“查找所有引用”命令。 |
复制 | 复制所选节点的内容(但不复制其子节点)。 |
刷新 | 折叠所选节点,以便重新展开它显示当前信息。 |