Visual Basic“编辑并继续”中不支持的编辑

利用“编辑并继续”,您可以在中断模式下停止程序执行,对执行代码进行更改,以及继续执行包含新更改的程序。 通常情况下,影响类的公共结构的声明性代码编辑是禁止的,但对类内部的方法、属性体或私有声明的很多编辑是允许的。 “编辑并继续”会尽可能将不可编辑的代码标记为浅灰色。

如果需要进行不受支持的更改,则必须停止调试,执行更改,然后启动新的调试会话。

主题内容

以下各节介绍“编辑并继续”不支持的编辑。

方法和属性体编辑

特性编辑

类声明编辑

类成员声明编辑

编译器选项编辑

条件编译编辑

常量编辑

委托和事件声明编辑

枚举编辑

外部声明编辑

导入编辑

接口定义编辑

模块声明编辑

模块成员声明编辑

嵌套类型声明编辑

结构声明编辑

方法和属性体编辑

对静态局部变量的不受支持的更改

  • 移除静态局部变量。

对迭代构造的不受支持的更改

  • 当指令指针位于 While 循环的条件中时,修改该条件。

  • 当指令指针位于表达式中时,修改 For 语句的下限或上限。

  • 当指令指针在枚举器表达式中使用时,添加或移除 Next 的循环。

  • 当指令指针位于 For Each 循环体中时,添加该循环。

  • 当指令指针位于 For Each 循环的枚举器表达式或循环体中时,更改该循环的迭代器。

  • 当指令指针位于 For Each 循环的枚举器表达式中时,更改该枚举器表达式。

对泛型的不受支持的更改

  • 对泛型方法本身和泛型方法体的更改不受支持。 可以添加、删除或更改泛型类型的实例化或对现有泛型方法的调用。

其他不受支持的更改

  • 更改调用堆栈中的方法的调用语句。

  • 当指令指针结束于 Catch 块或 Finally 块中时,添加 Try...Catch 块。

  • 当指令指针位于 Catch 块或 Finally 块中时,移除 Try...Catch 块。

  • 在当前指令指针的前后添加六个或更多嵌套 Try 语句。

  • 在当前指令指针的前后添加 Using 块。

  • 在当前指令指针的前后添加 SynchLock 块。

  • 添加、移除或修改用户定义的 #region。

特性编辑

“编辑并继续”不支持修改特性。 具体而言,“编辑并继续”不支持以下更改:

  • 定义、编辑或删除特性类。

  • 添加特性。

  • 编辑或移除现有特性。

类声明编辑

当在中断模式下时,“编辑并继续”不允许对类声明的大多数更改。 具体而言,“编辑并继续”不支持以下更改:

  • 创建新类。

  • 重命名、删除或更改现有类的继承。

  • 实现新接口或移除接口的实现。

  • 对类更改以下任一修饰符:MustInherit、NotInheritable 或 Shared。

  • 添加、更改或移除 ComClass 状态。

  • 更改类的访问修饰符。

  • 编辑任何泛型类声明。

类成员声明编辑

大多数“编辑并继续”情况中都禁止对成员声明的更改。 例如,在中断模式期间,不能更改成员的签名或访问级别,不能声明新的非私有方法或属性,并且不能完全移除成员。 具体而言,“编辑并继续”不支持以下更改:

  • 通过在包含块中声明具有相同名称的全局或成员变量来隐藏现有成员变量。

  • 通过在块内声明新实例来隐藏静态局部变量。

  • 添加新的非私有属性或方法。 允许添加 Private 属性或方法。

  • 添加新字段,除非该字段是 Private 的并且任何活动语句中均未出现该字段的名称。

  • 在标记为 SequentialLayout 或 ExplicitLayout 的任何类中添加新的 Private 字段。

  • 添加或删除构造函数。

  • 移除事件的处理程序。 允许添加事件处理程序。

  • 添加新的重载属性或方法,除非该属性或方法是 Private 的并且任何活动语句中均未出现其名称。

  • 添加或移除成员变量上的 WithEvents 子句。

  • 删除成员。

  • 更改属性或方法声明以停止实现接口。

  • 编辑使用泛型的任何方法。

  • 更改签名或返回非私有属性或方法的类型。

  • 在基类中重写或隐藏成员。

  • 更改方法的 MustInherit 或 NotOverridable 状态。

  • 更改属性或方法的访问修饰符。

  • 更改字段的类型或只读状态。

  • 更改公共字段。

编译器选项编辑

当在中断模式下使用“编辑并继续”时,不能更改、添加或移除以下编译器选项:

  • Option Strict

  • Option Explicit

  • Option Compare

条件编译编辑

当在“编辑并继续”模式下,对条件编译指令的大多数更改都是不允许的。 具体而言,“编辑并继续”不支持以下更改:

  • 添加或移除条件编译指令。

  • 添加、移除或更改条件编译语句的计算表达式。

常量编辑

当在“编辑并继续”模式下时,对常量的更改非常受限制。 具体而言,“编辑并继续”不支持以下更改:

  • 定义新常量,除非该常量是私有的并且任何活动语句中均未出现该常量的名称。

  • 更改常量的类型或值。

  • 移除常量。

委托和事件声明编辑

在中断模式下,“编辑并继续”不允许对委托和事件的大多数更改。 具体而言,“编辑并继续”不支持以下更改:

  • 定义新委托。

  • 更改或删除委托定义。

  • 定义新事件。

  • 删除事件。

枚举编辑

在中断模式期间,“编辑并继续”不允许对枚举 (Enums) 进行更改。 具体而言,“编辑并继续”不支持以下更改:

  • 定义新 Enum。

  • 修改 Enum 的基础类型。

  • 添加、更改或移除 Enum 成员。

  • 更改 Enum 的访问修饰符。

外部声明编辑

一般来说,在“编辑并继续”过程中,您不能更改外部方法的声明。 具体而言,“编辑并继续”不支持以下更改:

  • 添加或移除外部声明。

  • 更改外部声明的签名或封送外部声明的特性。

导入编辑

当在中断模式下时,“编辑并继续”不允许添加、更改或移除 Imports 语句。

接口定义编辑

尽管您经常可以更改实现接口的成员,但“编辑并继续”通常不允许更改实际接口定义。 具体而言,“编辑并继续”不支持以下更改:

  • 定义新接口。

  • 添加、更改或移除接口成员。

  • 删除现有接口。

  • 更改接口的访问修饰符。

  • 更改接口继承层次结构。

模块声明编辑

当在中断模式下时,“编辑并继续”不允许对模块声明的大多数更改。 具体而言,“编辑并继续”不支持以下更改:

  • 创建新模块。

  • 重命名或删除现有模块。

  • 更改模块的访问修饰符。

模块成员声明编辑

利用“编辑并继续”,您可以在中断模式下对模块成员(如属性、方法和字段)进行各种更改。 但是,不支持某些更改。 特别是,“编辑并继续”不支持添加、删除或更改非私有成员的类型或签名。

具体而言,“编辑并继续”不支持以下更改:

  • 添加新成员,除非该成员是 Private 成员,并且任何活动语句中均未出现该成员的名称。

  • 移除属性或方法。

  • 更改非私有属性或方法的签名。

  • 编辑使用泛型的任何方法。

  • 更改属性或方法的访问修饰符(例如,将 Public 更改为 Private)。

  • 删除或更改现有字段的类型。

嵌套类型声明编辑

通常情况下,在使用“编辑并继续”时,不能在中断模式下更改嵌套类型声明。 具体而言,“编辑并继续”不支持以下更改:

  • 添加新嵌套类型。

  • 将嵌套类型移动到其他命名空间或类型。

结构声明编辑

中断模式下,“编辑并继续”不允许对结构声明的大多数更改。 具体而言,“编辑并继续”不支持以下更改:

  • 创建新结构。

  • 重命名或删除现有结构。

  • 实现新接口或移除接口的实现。

  • 更改结构的访问修饰符。

结构成员声明编辑

利用“编辑并继续”,您可以在中断模式下对结构成员(如属性、方法和字段)进行各种更改。 但是,有些更改不受支持,特别是影响结构成员的声明的更改。 具体而言,“编辑并继续”不支持以下更改:

  • 添加或移除属性或方法,包括构造函数方法(除非该方法是 Private,并且任何活动语句中均未出现该字段的名称)。

  • 更改属性或方法的签名。

  • 编辑使用泛型的任何方法。

  • 更改属性或方法声明是否实现接口。

  • 更改属性或方法的访问修饰符(例如,将 Public 更改为 Private)。

  • 添加或移除字段。

  • 更改字段的类型。

请参见

任务

如何:使用“编辑并继续”在中断模式下应用编辑

其他资源

编辑并继续 (Visual Basic)