更新:2007 年 11 月
本主题适用于:
| 版本 | Visual Basic | C# | C++ | Web Developer | 
|---|---|---|---|---|
| 速成版 | .gif) | .gif) | .gif) | .gif) | 
| 标准版 | .gif) | .gif) | .gif) | .gif) | 
| 专业团队版 | .gif) | .gif) | .gif) | .gif) | 
表格图例:
| .gif) | 适用 | 
| .gif) | 不适用 | 
| .gif) | 默认情况下隐藏的一条或多条命令。 | 
托管表达式计算器接受大多数用 Visual Basic 编写的表达式。在“即时”窗口中,表达式计算器仅支持单行语句。
下列各节提供特定信息并讨论某些不受支持的表达式类型:
- 标识符和类型 
- 函数计算 
- 运算符 
- 不受支持的关键字 
- 字符串 
- 强制转换 
- TypeOf 运算符 
- 包含内部类型的对象变量 
- 属性计算 
- WebMethods 
- 变量声明 
Visual Basic 不支持用来以有意义的形式显示数据类型内容的自动展开规则。有关更多信息,请参见显示自定义数据类型的元素。
强制转换
简单强制转换在调试器中有效:
A = CStr(B)
函数计算
调试器支持函数的计算,包括重载函数的计算。因此,您可以输入以下表达式之一,并且调试器将调用重载函数的正确版本:
myFunction (param1)
myFunction (param1, param2)
在调试器中计算函数将调用并执行该函数的代码。如果函数具有副作用,例如分配内存或更改全局变量的值,则在调试器窗口中计算该函数将更改程序的状态,这可能生成意外的结果。
在对重载函数设置断点时,断点的位置取决于指定函数的方式。如果只指定函数名,则调试器将对该函数名的每一重载设置一个断点。如果指定完整签名(函数名和完整参数列表),调试器将在指定重载上设置一个断点。
标识符和类型
调试器表达式可以使用在当前范围内可见的任何标识符。例如,如果调试器在函数 Magh 中暂停,则可以使用大多数在 Magh 中可见的标识符(包括变量名和函数名)。不支持局部常量。可以设置在当前范围中可见的任何变量的值。
调试器可以正确地显示任何基元类型或内部类型的变量。对于类类型的变量,调试器基于派生程度最大的类型正确显示值。如果具有从类型 Cat 派生的 Lion 类型的对象 leo,则可为类型 Lion 的对象计算 leo.Clawlength 并获得正确的值。
导入别名
不能在调试器窗口中使用导入别名。
包含内部类型的对象变量
包含内部变量类型(如整型)的对象变量的显示和编辑方式可能看起来不够直观。例如,假定您的源代码包含如下所示的对象变量:
Dim obj As Object = 5
“监视”窗口将变量 obj 的值显示为:
5 {Integer}
若要将该变量的值更改为 6,则应输入:
6
不应输入:
6 {Integer}
编辑该值后,您将注意到调试器为您添加了 {Integer}。
运算符
调试器正确地计算大多数运算符,包括:
- 算术运算符:(表达式1 + 表达式2、表达式1 - 表达式2、表达式1 * 表达式2、表达式1 / 表达式2、表达式1\表达式2、表达式1^表达式2、表达式1Mod表达式2)。 
- 赋值运算符:(变量1 = 表达式2、变量1 ^= 表达式2、变量1 *= 表达式2、变量1 /= 表达式2、变量1 \= 表达式2、变量1 += 表达式2、变量1 -= 表达式2、变量1 &= 表达式2)。 
- 比较运算符:(表达式2 < 表达式2、表达式2 <= 表达式2、表达式1 > 表达式2、表达式1 >= 表达式2、表达式1 = 表达式2、表达式1 <> 表达式2)。 
- 串联运算符:(表达式1 & 表达式2、表达式1 + 表达式2)。 
- 逻辑运算符:(表达式1 And 表达式2、表达式1 Or 表达式2、表达式1 XOr 表达式2、表达式1 AndAlso 表达式2、表达式1 OrElse 表达式2、Not表达式1)。 
- 一元运算符:(- 表达式1、Not 表达式1、GetType (类型))。 
属性计算
调试器可以在任何变量窗口中计算属性。不过,在调试器中计算属性可能会产生影响程序结果的副作用,如更改变量值。要防止意外计算所导致的副作用,可以在“常规”->“调试”->“选项”对话框中关闭属性计算。
字符串
在 Visual Basic 中,可以对字符串使用 Length 运算符:
mystring.Length
- 或 -
"hello world".Length
TypeOf 运算符
在 Visual Basic 中,可以在调试器窗口中使用 TypeOf 运算符:
TypeOf 表达式 Is 类型
例如,
TypeOf Me Is Integer
显示值 false。
如果使用 TypeOf,它必须是使用 Is 的表达式的一部分。如果使用 TypeOf 而未使用 Is,将得到下面的错误信息:
Is required
不受支持的关键字
调试器窗口表达式中不支持下列 Visual Basic 关键字:
- AddressOf 
- End 
- Error 
- Exit 
- Goto 
- On Error 
- Return 
- Resume 
- Select/Case 
- Stop 
- SyncLock 
- Throw 
- Try/Catch/Finally 
- With 
此外,不支持任何命名空间或模块级的关键字(如 End Sub 或 Module)。
变量声明
不能在调试器窗口中声明显式的新变量。
但是,可以在“即时”窗口中向隐式变量赋值。这些隐式变量的范围限于调试器,无法在调试器外访问。例如,语句 o = 5 将隐式地创建一个新变量 o,并向其赋值 5。这样的隐式变量为 Object 类型,除非调试器可以推导该类型。
WebMethods
不能从调试器窗口调用 WebMethods。