檢視呼叫階層

藉由檢視程式碼的呼叫階層,您將可瀏覽對所選方法、屬性或建構函式發出或有時是從這些項目發出的所有呼叫。 這可讓您深入了解程式碼的流程,並評估程式碼變更的影響。 您可以檢查數層的程式碼,以檢視複雜的方法呼叫鏈結及程式碼的其他進入點。 這可讓您探索所有可能的執行路徑。

在 Visual Studio 中,您可以在設計階段檢視呼叫階層。 這意謂著您不需要設定中斷點並啟動偵錯工具,即可檢視執行階段呼叫堆疊。

使用 [呼叫階層] 視窗

若要顯示 [呼叫階層] 視窗,請在程式碼編輯器中方法、屬性或建構函式呼叫的名稱上按一下滑鼠右鍵,然後選取 [檢視呼叫階層]

成員名稱會顯示在 [呼叫階層] 視窗的樹狀檢視窗格中。 如果您展開成員節點,將會出現 [呼叫目標 <成員名稱>] 和 [呼叫來源 <成員名稱>] (適用於 C++) 子節點。

針對 C++ 程式代碼,您可以看到對成員和成員的明確呼叫:

Call Hierarchy for C++ code in Visual Studio

注意

在 C++ 程式代碼中,成員函式可以隱含呼叫,例如建構函式或類型轉換方法;這些隱含呼叫不一定包含在清單中。

針對 C# 和 Visual Basic 程式碼,您可以查看對成員發出的呼叫,但無法查看從成員發出的呼叫:

Call Hierarchy for C# code in Visual Studio

  • 如果您展開 [呼叫目標] 節點,則會顯示呼叫選取之成員的所有成員。

  • 針對 C++,f 您展開 [ 從呼叫] 節點,會顯示所選成員所呼叫的所有成員。

您可以接著展開每個呼叫成員,以查看其 [呼叫目標] 和 [呼叫來源] (適用於 C++) 節點。 這可讓您瀏覽至呼叫端的堆疊中,如下圖所示:

Call Hierarchy window with multiple levels expanded

若是定義為虛擬或抽象的成員,則會出現 [覆寫方法名稱] 節點。 若是介面成員,會出現 [實作方法名稱] 節點。 這些可展開的節點都會在相同階層顯示為 [呼叫目標] 和 [呼叫來源] 節點。

工具列上的 [搜尋範圍] 方塊包含 [我的方案]、[目前專案] 和 [目前文件] 的選項。

當您選取 [呼叫階層] 樹狀檢視窗格中的子成員時:

  • [呼叫階層] 詳細資料窗格會顯示從父成員中呼叫子成員的所有程式碼行。

  • [程式碼定義] 若已開啟,便會顯示所選成員的程式碼 (僅適用於 C++)。 如需有關這個視窗的詳細資訊,請參閱檢視程式碼的結構

注意

「呼叫階層」功能並不會尋找方法群組參考,這包括將方法新增為事件處理常式或將方法指派給委派項目的位置。 若要尋找某個方法的所有參考,您可以使用 [尋找所有參考] 命令。

捷徑功能表項目

下表描述幾個當您以滑鼠右鍵按一下樹狀檢視窗格中的節點時,可以使用的捷徑功能表選項。

操作功能表項目 描述
增為新根目錄 將選取的節點新增至樹狀檢視窗格作為新的根節點。 這可讓您將注意力放在特定樹狀子目錄。
移除根目錄 從樹狀檢閱窗格移除所選根節點。 這個選項只能從根節點使用。

您也可以使用 [移除根目錄] 工具列按鈕來移除選取的根節點。
移至定義 在選取的節點上執行 [移至定義] 命令。 如此即可巡覽至成員呼叫的原始定義或變數定義。

若要執行 [移至定義] 命令,您也可以按兩下選取的節點,或在選取的節點上按 F12。
尋找所有參考 在選取的節點上執行 [尋找所有參考] 命令。 如此即可尋找專案中參考類別或成員的所有程式碼行。

您也可以使用 SHIFT+F12,在選取的節點上執行 [尋找所有參考] 命令。
複製 複製選取之節點 (而非其子節點) 的內容。
重新整理 摺疊選取的節點,以便於再次展開時顯示目前的資訊。