Visual Basic“编辑并继续”中不支持的编辑
" 编辑并继续 " 可以在中断模式下终止程序执行的 les,对执行代码以及该程序执行的更改与新合并的更改。声明性代码编辑器影响类的公共结构通常禁止,但是,许多编辑您可能对方法,属性主体,或者类中的私有的声明允许。只要有可能,“编辑并继续”就会将不可编辑的代码标记为浅灰色。
如果您需要进行不支持的更改,必须停止调试,进行更改,然后启动新的调试会话。
主题内容
以下各节介绍不支持 " 编辑并继续 " 编辑。
方法和属性主体编辑
不受支持的静态局部变量的更改
- 移除静态局部变量。
不受支持的迭代构造更改
当指令指针处于 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)。
添加或移除字段。
更改字段的类型。