使用之前检查值类型

VBScript 是“弱类型”编程语言。这意味着您可以创建、使用和访问数据值,而无需一开始就声明其类型。但是,某些操作只能对特定类型的值执行。因此,对它们执行任何操作之前先检查数据类型是很重要的。

不同类型的值在不同语句中有不同的行为。对象值的行为甚至更不可预知,因为行为取决于对象的实现。例如,调用 <实体>_CanDelete(Entity) 中的对象可以是文本或主题节点。

建议

要避免不可预知的结果:

  • 使用之前先检查值的类型,尤其是对象类型。检查对象类型时,还检查对象有无您访问的属性。

  • 备注: 在此部分中提供的示例中,使用之前只检查对象类型。

  • 假定尽可能少 - 不要假定某值属于特定类型。通过使用 Else 语句和 Select Case 语句,编写可以处理所有可能性的脚本。

  • 使用不同的 VBScript 函数之前,始终要检查参数类型,如 IsArray、IsDate、IsNull、IsEmpty、IsNumeric 和 IsObject。

  • 不要假定对象的默认属性属于特定类型;类型可能随对象而不同。

  • 使用 VBScript 内置的转换函数可以实现一定程度的类型安全。

  • 使用对象时,请调用 IsNull 和 IsEmpty 函数,来检查确认收到的值既不是 Null 也不为 Empty。

示例: 为以下示例目的,假定字段值如下表中所示声明。

字段值

类型

Bug_Fields[“BG_BUG_ID”].Value

整数

Bug_Fields[“BG_SUMMARY”].Value

字符串

Bug_Fields[“BG_SUBJECT”].Value

实现 ISysTreeNode 接口的对象

以下示例中,语句用法是正确的。整数已转换为字符串。

If Bug_Fields["BG_BUG_ID"].Value = "10" Then...

以下示例中,语句用法是正确的。字符串可比较。

If Bug_Fields["BG_SUMMARY"].Value = "some text" Then...

以下示例中,语句用法是错误的。仅当 BG_SUBJECT 字段的值既不是 Empty 也不是 Null 时,此代码才能起作用。VBScript 还假定此对象的默认值(即默认属性)是字符串类型或与字符串类型可比较,但实际情况并非总是如此。

If Bug_Fields["BG_SUBJECT"].Value = "My Tests" Then...