藉由檢視程式碼的呼叫階層,您可以導覽所有呼叫,有時甚至從選取的方法、屬性或建構函式導覽。 這可讓您更瞭解程式碼的流動方式,並評估程式碼變更的影響。 您可以檢查數個層級的程式碼,以檢視複雜的方法呼叫鏈結,以及程式碼的其他進入點。 這可讓您探索所有可能的執行路徑。
在 Visual Studio 中,您可以在設計階段檢視呼叫階層。 這表示您不需要設定中斷點並啟動偵錯工具,即可檢視執行階段呼叫堆疊。
使用 [呼叫階層] 視窗
若要顯示 [呼叫階層] 視窗,請在程式碼編輯器中以滑鼠右鍵按一下方法、屬性或建構函式呼叫的名稱,然後選取 [ 檢視呼叫階層]。
成員名稱會顯示在 「通話階層」 視窗的樹狀檢視窗格中。 如果您展開成員節點 [ 呼叫者]成員名稱,以及針對 C++ 展開 [ 呼叫來源]成員名稱,則會出現子節點。
針對 C++ 程式碼,您可以看到成員之間的明確呼叫:
備註
在C++程式碼中,可以隱含呼叫成員函數,例如建構函式或類型轉換方法;這些隱含呼叫不一定包含在清單中。
針對 C# 和 Visual Basic 程式碼,您可以看到成員的呼叫,但無法看到來自下列位置的呼叫:
如果您展開 呼叫給 節點,則會顯示呼叫所選成員的所有成員。
針對 C++,如果您展開 [呼叫來源 ] 節點,則會顯示所選成員 (明確) 呼叫的所有成員。
然後,您可以展開每個呼叫成員,以查看其 [呼叫者] 節點,以及 C++ 的 [呼叫來源] 節點。 這可讓您導覽至呼叫端堆疊,如下圖所示:
對於定義為虛擬或抽象的成員,會出現 [ 置換方法名稱 ] 節點。 對於介面成員,會出現 實作方法名稱 節點。 這些可展開的節點會顯示在與 「呼叫者 」和「 呼叫來源」 節點相同的層級。
工具列上的 [搜尋範圍] 方塊包含 [我的解決方案]、[ 目前專案] 和 [目前文件] 的選項。
當您在 「通話階層」 樹狀結構檢視窗格中選取子成員時:
[ 呼叫階層] 詳細資料窗格會顯示從父成員呼叫該子成員的所有程式碼行。
如果開啟,則 [程式碼定義] 視窗會顯示所選成員的程式碼 (僅限 C++)。 如需此視窗的詳細資訊,請參閱 檢視程式碼的結構。
備註
呼叫階層功能不會尋找方法群組參考,其中包括將方法新增為事件處理常式或指派給委派的位置。 若要尋找方法的所有參照,您可以使用「 尋找所有參照」 指令。
捷徑功能表項目
下表說明當您在樹狀檢視窗格中以滑鼠右鍵按一下節點時可用的數個捷徑功能表選項。
| 內容功能表項目 | Description |
|---|---|
| 新增為新根目錄 | 將選取的節點新增至樹狀檢視窗格做為新的根節點。 這使您能夠將注意力集中在特定的子樹上。 |
| 移除根目錄 | 從樹狀檢視窗格中移除選取的根節點。 此選項僅可從根節點使用。 您也可以使用 「移除根」 工具列按鈕來移除選取的根節點。 |
| 轉到定義 | 在選取的節點上執行「移至定義」指令。 這會導覽至成員呼叫或變數定義的原始定義。 若要執行「移至定義」指令,您也可以按兩下選取的節點,或在選取的節點上按 F12。 |
| 尋找所有參考文獻 | 在選取的節點上執行「尋找所有參考」指令。 這會尋找專案中參考類別或成員的所有程式碼行。 您也可以使用 SHIFT+F12 在選取的節點上執行「尋找所有參照」指令。 |
| Copy | 複製所選節點的內容 (但不複製其子節點)。 |
| 重新整理 | 收合選取的節點,以便重新展開它會顯示目前的資訊。 |