Иерархия вызовов
Иерархия вызовов позволяет переходить по коду, отображая все входящие и исходящие вызовы выбранного метода, свойства или конструктора.Это позволяет лучше понимать структуру кода и оценивать последствия его изменения.Можно проверять разные уровни кода, просматривая сложные цепочки вызовов методов и дополнительные точки входа в код, что позволяет исследовать все возможные пути выполнения.
Иерархия вызовов доступна во время разработки в отличие от стека вызова, который отображается отладчиком.
Использование иерархии вызовов
Чтобы отобразить окно Иерархия вызовов, щелкните правой кнопкой мыши имя метода, свойства или вызова конструктора, а затем выберите пункт Просмотр иерархии вызовов.
Имя члена отображается в окне Иерархия вызовов в области представления в виде дерева.Если развернуть узел члена, то появятся вложенные узлы: Вызовыимя_члена и Вызовы изимя_члена.На следующем рисунке показаны эти узлы в окне Иерархия вызовов.
Окно "Иерархия вызовов"
Если развернуть узел Вызовы, то будут отображены все члены, вызывающие выбранный член.
Если развернуть узел Вызовы из, то будут отображены все члены, вызываемые выбранным членом.
Затем можно развернуть каждый из членов этих вложенных узлов в узлах Вызовы и Вызовы из.Это дает возможность переходить по стеку вызывающих объектов, как показано на следующем рисунке.
Окно "Иерархия вызовов"
Для членов, определенных как виртуальные или абстрактные, появляется узел Переопределяет имя_метода.Для членов интерфейса появляется узел Реализует имя_метода.Эти разворачиваемые узлы появляются на одном уровне с узлами Вызовы и Вызовы из.
Поле Область поиска, расположенное на панели инструментов, содержит варианты для списков Мое решение, Текущий проект и Текущий документ.
При выборе дочернего члена в области представления в виде дерева в окне Иерархия вызовов происходит следующее:
Область сведений Иерархия вызовов отображает все строки кода, в которых дочерний член вызывается из родительского члена.
Окно определения кода, если открыть показан код для выбранного элемента.Это поле доступно в c# и C++.Дополнительные сведения об этом окне см. в разделе Просмотр структуры кода.
Примечание |
---|
В окне "Иерархия вызовов" не отображаются ссылки на группы методов, в которые входит метод, добавленный в качестве обработчика событий или назначенный делегату.Чтобы отобразить все ссылки на метод, можно воспользоваться командой Найти все ссылки. |
Пункты контекстного меню
В следующей таблице дается описание нескольких пунктов контекстного меню, которые становятся доступны при щелчке правой кнопкой мыши в области представления в виде дерева.
Пункт контекстного меню |
Описание |
---|---|
Добавить как новый корневой объект |
Добавляет выбранный узел в область представления в виде дерева как новый корневой узел.Это позволяет сфокусировать внимание на конкретном поддереве. |
Удалить корневой объект |
Удаляет выбранный корневой узел из области представления в виде дерева.Этот параметр доступен только в корневом узле. Для удаления выбранного корневого узла можно также использовать кнопку панели инструментов Удалить корневой объект. |
Перейти к определению |
Выполняет команду "Перейти к определению" в выбранном узле.Эта команда выполняет переход к исходному определению для вызова члена или переменной. Чтобы выполнить команду "Перейти к определению", можно также дважды щелкнуть выбранный узел или нажать клавишу F12 в выбранном узле. |
Найти все ссылки |
Выполняет команду "Найти все ссылки" в выбранном узле.Будут найдены все строки кода в проекте, которые ссылаются на класс или элемент. Чтобы выполнить команду "Найти все ссылки" в выбранном узле, можно также нажать комбинацию клавиш SHIFT+F12. |
Копировать |
Копирует содержимое выбранного узла (но не его подузлов). |
Обновить |
Сворачивает выбранный узел, чтобы при повторном его развертывании были отображены текущие сведения. |