Поделиться через


Иерархия вызовов

Иерархия вызовов позволяет переходить по коду, отображая все входящие и исходящие вызовы выбранного метода, свойства или конструктора.Это позволяет лучше понимать структуру кода и оценивать последствия его изменения.Можно проверять разные уровни кода, просматривая сложные цепочки вызовов методов и дополнительные точки входа в код, что позволяет исследовать все возможные пути выполнения.

Иерархия вызовов доступна во время разработки в отличие от стека вызова, который отображается отладчиком.

Использование иерархии вызовов

Чтобы отобразить окно Иерархия вызовов, щелкните правой кнопкой мыши имя метода, свойства или вызова конструктора, а затем выберите пункт Просмотр иерархии вызовов.

Имя члена отображается в окне Иерархия вызовов в области представления в виде дерева.Если развернуть узел члена, то появятся вложенные узлы: Вызовыимя_члена и Вызовы изимя_члена.На следующем рисунке показаны эти узлы в окне Иерархия вызовов.

Окно "Иерархия вызовов"

Иерархия вызовов с одним открытым узлом

  • Если развернуть узел Вызовы, то будут отображены все члены, вызывающие выбранный член.

  • Если развернуть узел Вызовы из, то будут отображены все члены, вызываемые выбранным членом.

Затем можно развернуть каждый из членов этих вложенных узлов в узлах Вызовы и Вызовы из.Это дает возможность переходить по стеку вызывающих объектов, как показано на следующем рисунке.

Окно "Иерархия вызовов"

Несколько узлов, открытых в окне "Иерархия вызовов"

Для членов, определенных как виртуальные или абстрактные, появляется узел Переопределяет имя_метода.Для членов интерфейса появляется узел Реализует имя_метода.Эти разворачиваемые узлы появляются на одном уровне с узлами Вызовы и Вызовы из.

Поле Область поиска, расположенное на панели инструментов, содержит варианты для списков Мое решение, Текущий проект и Текущий документ.

При выборе дочернего члена в области представления в виде дерева в окне Иерархия вызовов происходит следующее:

  • Область сведений Иерархия вызовов отображает все строки кода, в которых дочерний член вызывается из родительского члена.

  • Окно определения кода, если открыть показан код для выбранного элемента.Это поле доступно в c# и C++.Дополнительные сведения об этом окне см. в разделе Просмотр структуры кода.

ПримечаниеПримечание

В окне "Иерархия вызовов" не отображаются ссылки на группы методов, в которые входит метод, добавленный в качестве обработчика событий или назначенный делегату.Чтобы отобразить все ссылки на метод, можно воспользоваться командой Найти все ссылки.

Пункты контекстного меню

В следующей таблице дается описание нескольких пунктов контекстного меню, которые становятся доступны при щелчке правой кнопкой мыши в области представления в виде дерева.

Пункт контекстного меню

Описание

Добавить как новый корневой объект

Добавляет выбранный узел в область представления в виде дерева как новый корневой узел.Это позволяет сфокусировать внимание на конкретном поддереве.

Удалить корневой объект

Удаляет выбранный корневой узел из области представления в виде дерева.Этот параметр доступен только в корневом узле.

Для удаления выбранного корневого узла можно также использовать кнопку панели инструментов Удалить корневой объект.

Перейти к определению

Выполняет команду "Перейти к определению" в выбранном узле.Эта команда выполняет переход к исходному определению для вызова члена или переменной.

Чтобы выполнить команду "Перейти к определению", можно также дважды щелкнуть выбранный узел или нажать клавишу F12 в выбранном узле.

Найти все ссылки

Выполняет команду "Найти все ссылки" в выбранном узле.Будут найдены все строки кода в проекте, которые ссылаются на класс или элемент.

Чтобы выполнить команду "Найти все ссылки" в выбранном узле, можно также нажать комбинацию клавиш SHIFT+F12.

Копировать

Копирует содержимое выбранного узла (но не его подузлов).

Обновить

Сворачивает выбранный узел, чтобы при повторном его развертывании были отображены текущие сведения.