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