Изменения, не поддерживаемые в режиме "Изменить и продолжить" Visual Basic
Правка и продолжить les остановке выполнения программы в режиме приостановки выполнения, затем внесите изменения в код и выполнению при выполнении программы возобновить с изменениями, включаемыми повторно.Использовать декларативные правки кода, которые влияют на структуру класса обычно запрещены, открытая только много правок, которые может потребоваться внести в тело метода, свойства или закрытые объявления внутри класса.Режим "Изменить и продолжить" по возможности помечает запрещенный к изменению код светло-серым.
Если необходимо внести изменение, не поддерживаемое, необходимо остановить отладку, внесены изменения в код и начните отладку заново.
Содержание раздела
В следующих разделах описываются неподдерживаемые правки для правки и продолжить.
Правка текста сообщения метода и свойства
Неподдерживаемые изменения статических локальных переменных
- Удаление статической локальной переменной.
Неподдерживаемые изменения итерационных конструкций
Изменение условия цикла While, когда указатель инструкции указывает на условие.
Изменение нижней или верхней границы инструкции For, когда указатель находится в выражении.
Добавление или удаление цикла Next, когда указатель инструкций используется в выражении перечислителя.
Добавление цикла For Each, когда указатель инструкций находится в теле цикла.
Изменение итератора цикла For Each, когда указатель инструкций находится в выражении перечислителя или в теле цикла.
Изменение выражения перечислителя цикла For Each, когда указатель инструкций находится в выражении перечислителя.
Неподдерживаемые изменения универсальных шаблонов
- Изменения универсального метода — его самого или его тела — не поддерживаются.Создание универсального типа или вызовы существующих универсальных методов могут быть добавлены, удалены или изменены.
Другие неподдерживаемые изменения
Изменение инструкции вызова метода, находящейся в стеке вызовов.
Добавление блока Try...Catch, когда указатель инструкций находится в блоке Catch или Finally.
Удаление блока Try...Catch, когда указатель инструкций находится в блоке Catch или Finally.
Добавление шести и более вложенных инструкций Try вокруг текущего указателя инструкций.
Добавление блока Using вокруг текущего указателя инструкций.
Добавление блока SynchLock вокруг текущего указателя инструкций.
Добавление, удаление или изменение пользовательского #region.
Правки атрибута
Режим "Изменить и продолжить" не поддерживает модификации атрибутов.В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
определение, редактирование или удаление класса атрибутов;
добавление атрибута;
изменение или удаление существующего атрибута.
Правки объявления классов
Большинство изменений в классе объявлений не поддерживаются режимом "Изменить и продолжить" в режиме прерывания.В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
Создание нового класса.
Переименование, удаление или изменение наследования существующего класса.
Реализация нового интерфейса или удаление реализации интерфейса
Изменение любого из следующих модификаторов для класса: MustInherit, NotInheritable или Shared.
Добавление, изменение или удаление состояния ComClass.
Изменение модификатора доступа для класса.
Изменение любого объявления базового класса.
Правки объявления члена класса
Запрещены в большинстве правке и продолжают изменения в объявлении члена функции case.Например, нельзя изменить подпись или уровень доступа элемента, нельзя объявлять новый, не являющийся закрытым, метод или свойство, и нельзя полностью удалять элементы в режиме приостановки.В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
затенение существующей переменной-элемента путем объявления переменной-элемента или глобальной переменной с тем же именем в блоке, содержащем текущий;
затенение статической локальной переменной путем объявления нового экземпляра внутри блока;
добавление нового, не являющегося закрытым, свойства или метода.Разрешается добавление свойства или метода Private;
добавление нового поля, если только оно не является Private и нет ни одного вхождения имени поля в любую активную инструкцию;
добавление нового поля Private в любой класс, помеченный SequentialLayout или ExplicitLayout;
добавление или удаление конструктора;
удаление обработчиков событий.Разрешается добавление обработчика событий;
добавление нового перегруженного свойства или метода, если только они не Private и нет ни одного вхождения имени в любую активную инструкцию;
добавление или удаление условия WithEvents для переменной-элемента;
удаление элемента;
изменение объявления свойства или метода, которое останавливает реализацию интерфейса;
Изменение любого метода, использующего универсальные шаблоны;
изменение подписи или типа возвращаемого значения для свойства или метода, не являющихся закрытыми;
переопределение или затенение элемента в базовом классе;
изменение состояния MustInherit или NotOverridable у метода;
изменение модификаторов доступа для свойства или метода;
изменение типа поля или его параметра "только для чтения";
изменение открытого поля.
Изменение параметров компилятора
При использовании режима "Изменить и продолжить" в режиме приостановки нельзя изменять, добавлять или удалять следующие параметры компилятора:
Option Strict
Option Explicit
Option Compare
Правки условной компиляции
В режиме "Изменить и продолжить" запрещено большинство изменений директив условной компиляции.В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
добавление или удаление директив условной компиляции;
добавление, удаление или изменение вычисляемого выражения в операторе условной компиляции.
Правки констант
Возможности изменения констант в режиме "Изменить и продолжить" очень ограничены.В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
Определение новой константы, если только она не является константой с закрытым доступом и нет ни одного вхождения имени константы в любой активный оператор;
Изменение типа или значения константы;
Удаление константы.
Правки объявления делегата и события
В режиме "Изменить и продолжить" во время приостановки выполнения не допускается большинство изменений делегатов и событий.В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
определение нового делегата;
изменение или удаление определения делегата;.
определение нового события;
удаление события;
Правки перечисления
Изменения в перечислениях (Enums) не поддерживаются режимом "Изменить и продолжить".В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
определение новых Enum;
изменение базового типа Enum;
добавление, изменение и удаление элементов Enum;
изменение модификатора доступа из Enum.
Внешние правки объявлений
В общем случае нельзя изменить объявление внешних методов во время режима "Изменить и продолжить".В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
добавление или удаление внешних объявлений;
Изменение подписи или маршалировать атрибуты внешнего объявления.
Правка записей
Режим "Изменить и продолжить" не позволяет добавлять, изменять или удалять инструкции Imports в режиме приостановки выполнения.
Изменение определения интерфейса
Хотя часто разрешено вносить изменения в элементы, которые реализуют интерфейсы, изменения фактических определений интерфейса, как правило, не допускаются режимом "Изменить и продолжить".В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
Определение нового интерфейса.
Добавление, изменение или удаление членов интерфейса.
Удаление существующего интерфейса.
Изменение модификатора доступа интерфейса.
Изменение иерархии наследования интерфейса.
Правки объявления модуля
Большинство изменений в объявлениях модуля не поддерживаются операцией "Изменить и продолжить" в режиме приостановки.В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
Создание нового модуля;
Переименование или удаление существующего модуля;
Изменение модификатора доступа модуля.
Правки объявления члена модуля
Используя операцию "Изменить и продолжить", в режиме приостановки можно выполнять различные изменения элементов модуля, например, изменять свойства, методы и поля.Тем не менее, некоторые изменения не поддерживаются.К числу важных изменений, не поддерживаемых операцией "Изменить и продолжить", относится добавление, удаление и изменение типа или подписи открытых или защищенных элементов.
В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
Добавление нового элемента, если данный элемент не является закрытым (Private) и его имя не встречается в каком-либо активном операторе;
Удаление свойства или метода;
Изменение подписи открытого или защищенного свойства или метода;
Изменение любого метода, использующего универсальные шаблоны;
Изменение модификаторов доступа свойства или метода, например, изменение Public на Private;
Удаление или изменение типа существующего поля.
Правки объявления вложенных типов
Как правило, нельзя вносить изменения в объявления вложенных типов в режиме прерывания при использовании режима "Изменить и продолжить".В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
Добавление нового вложенного типа.
Перемещение вложенного типа в другое пространство имен или тип.
Правки объявление структуры
Большинство изменений объявлений структур не допускаются режимом "Изменить и продолжить" в режиме приостановки.В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
Создать новую структуру.
Переименование или удаление существующей структуры.
Реализация нового интерфейса или удаление реализации интерфейса
Измените модификатор доступа для структуры.
Правки объявления членов структуры
Используя режим "Изменить и продолжить", в режиме прерывания можно сделать любые изменения в элементах структуры — например изменить свойства, методы и поля.Некоторые изменения, однако, не поддерживаются. Например, изменения, касающиеся объявлений элементов структуры.В частности, в режиме "Изменить и продолжить" не поддерживаются следующие изменения:
добавление или удаление свойства или метода, включая конструкторы (если только метод не является Private и имя поля не встречается ни в каких активных инструкциях);
изменение подписи свойства или метода;
Изменение любого метода, использующего универсальные шаблоны;
изменение объявления свойства или метода, реализующего интерфейс;
изменение модификаторов доступа у свойства или метода (например, изменение Public на Private);
добавление или удаление поля;
изменение типа поля.