调用层次结构
调用层次结构(在 C# 和 C++ 中可用)通过显示选定方法、属性或构造函数的所有调用方及被调用方,使您可以在代码间进行导航。 这有助于更好地理解代码的流动方式,以及评估代码更改的效果。 您可以检查多个层级的代码,以查看方法调用的复杂链条以及代码的其他入口点,从而可以找到所有可能的执行路径。
与调试器显示的调用堆栈不同,调用层次结构可在设计时使用。
使用调用层次结构
若要显示**“调用层次结构”窗口,请右击某个方法、属性或构造函数调用的名称,然后单击“查看调用层次结构”**。
成员名称会显示在**“调用层次结构”窗口的树视图窗格中。 如果展开成员节点,则会显示“调用方”成员名称和“被调用方”成员名称子节点。 下图显示了“调用层次结构”**窗口中的这些节点。
调用层次结构窗口
如果展开**“调用方”**节点,则将显示调用选定成员的所有成员。
如果展开**“被调用方”**节点,则将显示选定成员调用的所有成员。
可以随后将其中每个子节点成员展开成**“调用方”和“被调用方”**节点。 这使您可以在调用方的堆栈中进行导航,如下图所示。
调用层次结构窗口
对于定义为虚拟或抽象成员的成员,会显示一个**“重写方法名”节点。 对于接口成员,会显示一个“实现方法名”节点。 这些可展开的节点与“调用方”和“被调用方”**节点显示在同一级。
工具栏上的**“搜索范围”框包含“我的解决方案”、“当前项目”和“当前文档”**选项。
当您在**“调用层次结构”**树视图窗格中选择某个子成员时:
**“调用层次结构”**详细信息窗格会显示在其中从父成员调用子成员的所有代码行。
“代码定义”窗口(如果打开)显示选定成员的代码。
提示
调用层次结构不会查找方法组引用,这些引用包含将方法添加为事件处理程序或将方法分配给委托的位置。 若要查找对方法的所有引用,可以使用“查找所有引用”命令。
快捷菜单项
下表描述了在树视图窗格中右击某个节点时,可以使用的快捷菜单选项。
上下文菜单项 |
说明 |
---|---|
作为新根添加 |
将选定节点添加为树视图窗格中的新根节点。 这使您可以集中关注特定子树。 |
移除根 |
将选定的根节点从树视图窗格中移除。 只有根节点有此选项。 还可以使用“移除根”工具栏按钮来移除选定的根节点。 |
转到定义 |
在选定节点上运行“转到定义”命令。 这会定位到成员调用的原始定义或变量定义。 若要运行“转到定义”命令,还可以双击选定节点或在选定节点上按 F12。 |
查找所有引用 |
在选定节点上运行“查找所有引用”命令。 这会在项目中查找所有引用某个类或成员的代码行。 还可以使用 Shift+F12 在选定节点上运行“查找所有引用”命令。 |
复制 |
复制选定节点(但不包含其子节点)的内容。 |
刷新 |
折叠选定的节点,重新展开它后便可显示最新的信息。 |