呼び出し階層の表示View call hierarchy

コードの呼び出し階層を表示すると、選択したメソッド、プロパティ、またはコンストラクターとの間のすべての呼び出しに移動できます。By viewing the call hierarchy for your code, you can navigate all calls to, and sometimes from, a selected method, property, or constructor. これにより、コード フローをより深く理解し、コードへの変更の効果を評価することができます。This enables you to better understand how code flows, and to evaluate the effects of changes to code. 複数レベルのコードを調査し、メソッド呼び出しとコードの追加エントリ ポイントの複雑なチェーンを表示できます。You can examine several levels of code to view complex chains of method calls and additional entry points to the code. そうすることで、考えられるすべて実行パスを調べられます。This enables you to explore all possible execution paths.

Visual Studio では、設計時に呼び出し階層を表示できます。In Visual Studio, you can view a call hierarchy at design time. つまり、ブレークポイントを設定してデバッガーを開始し、実行時の呼び出し履歴を表示する必要はありません。This means you don't have to set a breakpoint and start the debugger to view the run-time call stack.

[呼び出し階層] ウィンドウの使用Use the Call Hierarchy window

[呼び出し階層] ウィンドウを表示するには、コード エディターでメソッド、プロパティ、またはコンストラクターの呼び出しの名前を右クリックし、[呼び出し階層の表示] を選びます。To display the Call Hierarchy window, right-click in the code editor on the name of a method, property, or constructor call, and then select View Call Hierarchy.

[呼び出し階層] ウィンドウのツリー ビュー ペインに、メンバー名が表示されます。The member name appears in a tree view pane in the Call Hierarchy window. メンバー ノードを展開すると、[呼び出し先 '<メンバー名>'] サブノードと、C++ の場合は [呼び出し元 '<メンバー名>'] サブノードが表示されます。If you expand the member node, Calls To member name, and for C++, Calls From member name, subnodes appear.

C++ コードの場合、呼び出し元と呼び出し先の両方のメンバーを確認できます。For C++ code, you can see calls both to and from a member:

Visual Studio での C++ コードの呼び出し階層

C# および Visual Basic のコードの場合は、呼び出し先のメンバーは確認できますが、呼び出し元のメンバーは確認できません。For C# and Visual Basic code, you can see calls to a member, but not calls from:

Visual Studio での C# コードの呼び出し階層

  • Calls To ノードを展開すると、選択したメンバーを呼び出すすべてのメンバーが表示されます。If you expand the Calls To node, all members that call the selected member are displayed.

  • C++ の場合、[呼び出し元] ノードを展開すると、選択したメンバーによって呼び出されるすべてのメンバーが表示されます。For C++, f you expand the Calls From node, all members that are called by the selected member are displayed.

その後、各呼び出し元のメンバーを展開して、その呼び出し先ノードと、C++ の場合は呼び出し元ノードを確認できます。You can then expand each calling member to see its Calls To, and for C++, Calls From nodes. これにより、次の図に示すように、呼び出し元のスタックに移動することができます。This enables you to navigate into the stack of callers, as shown in the following image:

複数のレベルが展開されている [呼び出し階層] ウィンドウ

仮想または抽象として定義されたメンバーの場合、[Overrides method name ](メソッド名のオーバーライド) ノードが表示されます。For members that are defined as either virtual or abstract, an Overrides method name node appears. インターフェイス メンバーの場合は、[Implements method name](メソッド名の実装) ノードが表示されます。For interface members, an Implements method name node appears. これらの拡張可能なノードは、Calls To ノードおよび Calls From ノードと同じレベルで表示されます。These expandable nodes appear at the same level as the Calls To and Calls From nodes.

ツールバーの [検索範囲] ボックスには、[マイ ソリューション][現在のプロジェクト]、および [現在のドキュメント] の選択肢が含まれています。The Search Scope box on the toolbar contains choices for My Solution, Current Project, and Current Document.

[呼び出し階層] ツリー ビュー ペインで子メンバーを選択した場合:When you select a child member in the Call Hierarchy tree view pane:

  • [呼び出し階層] 詳細ウィンドウに、その子メンバーが親メンバーから呼び出されるすべてのコード行が表示されます。The Call Hierarchy details pane displays all lines of code in which that child member is called from the parent member.

  • [コード定義] ウィンドウが開いている場合は、選択したメンバーのコードが表示されます (C++ のみ)。The Code Definition window, if open, displays the code for the selected member (C++ only). このウィンドウの詳細については、「コードの構造の表示」を参照してください。For more information about this window, see View the structure of code.

注意

呼び出し階層機能はメソッド グループ参照を検索しません。これには、メソッドがイベント ハンドラーとして追加される場所、またはメソッドがデリゲートに割り当てられる場所が含まれます。The Call Hierarchy feature does not find method group references, which includes places where a method is added as an event handler or is assigned to a delegate. メソッドへのすべての参照を見つけるには、[すべての参照の検索] コマンドを使用できます。To find all references to a method, you can use the Find All References command.

ショートカット メニュー項目Shortcut menu items

次の表では、ツリー ビュー ペイン内のノードを右クリックして使用できるいくつかのショートカット メニューのオプションについて説明します。The following table describes several shortcut menu options that are available when you right-click a node in the tree view pane.

コンテキスト メニュー項目Context Menu Item 説明Description
新規ルートとして追加Add As New Root 新しいルート ノードとして選択したノードをツリー ビュー ペインに追加します。Adds the selected node to the tree view pane as a new root node. これにより、特定のサブツリーに集中することができます。This enables you to focus your attention on a specific subtree.
ルートの削除Remove Root 選択されたルート ノードをツリー ビュー ペインから削除します。Removes the selected root node from the tree view pane. このオプションはルート ノードからのみ使用できます。This option is available only from a root node.

選択したルート ノードを削除するには、[ルートの削除] ツールバー ボタンを使用することもできます。You can also use the Remove Root toolbar button to remove the selected root node.
定義に移動Go To Definition 選択したノードで、[定義へ移動] コマンドを実行します。Runs the Go To Definition command on the selected node. これにより、メンバーの呼び出しの元の定義または変数の定義に移動します。This navigates to the original definition for a member call or variable definition.

選択したノードをダブルクリックするか、選択したノードで F12 キーを押しても、[定義へ移動] コマンドを実行できます。To run the Go To Definition command, you can also double-click the selected node or press F12 on the selected node.
すべての参照の検索Find All References 選択したノードで、[すべての参照の検索] コマンドを実行します。Runs the Find All References command on the selected node. これにより、クラスまたはメンバーを参照するプロジェクト内のすべてのコード行を見つけます。This finds all the lines of code in your project that reference a class or member.

Shift キーを押しながら F12 キーを押しても、選択したノードで [すべての参照の検索] コマンドを実行できます。You can also use SHIFT+F12 to run the Find All References command on the selected node.
コピーCopy 選択したノードのコンテンツをコピーします (そのサブ ノードはコピーしません)。Copies the contents of the selected node (but not its subnodes).
最新の情報に更新Refresh 選択したノードを折りたたみ、再度展開して最新情報が表示されるようにします。Collapses the selected node so that re-expanding it displays current information.