本文描述了两个
Option 语句:
- Option Strict
- Option Explicit
Option Strict 是 Visual Basic .NET 中新增的语句,
Option Explicit 在 Microsoft Visual Basic 的早期版本中就有了。
本文分成以下几个部分:
Option Explicit 语句
默认情况下,Visual Basic .NET 编译器强制使用显式变量声明,这要求必须先声明每个变量,然后才能使用。要更改此默认行为,请参阅
更改默认的项目值
部分。
Option Strict 语句
默认情况下,Visual Basic .NET 编译器不强制遵循严格的数据键入。要更改此默认行为,请参阅
更改默认的项目值
部分。
Option Strict 将隐式数据类型转换限制为只能进行扩大转换。扩大转换明确禁止任何可能会丢失数据的数据类型转换,并禁止数值类型和字符串之间的任何转换。有关扩大转换的详细信息,请参阅
扩大转换
部分。
在使用
Option Strict 语句时,该语句必须在任何其他代码之前出现。在 Visual Basic .NET 中,通常可以将任何数据类型隐式转换为任何其他数据类型。在将一种数据类型的值转换为精度较小或者容量较小的数据类型时,可能会发生数据丢失现象。然而,如果在此类转换中将丢失数据,会出现运行时错误信息。
Option Strict 在编译时会向您通知这些类型的转换,以便您可以加以避免。
Option Strict 还在下列情况下生成错误信息:
- 对于任何未声明的变量。这是因为 Option Strict 还隐含 Option Explicit。
- 晚期绑定。
扩大转换
下表列出了标准的扩大转换。
收起该表格展开该表格
| 数据类型 | 扩大到数据类型 |
|---|
| Byte | Byte、Short、Integer、Long、Decimal、Single、Double |
| Short | Short、Integer、Long、Decimal、Single、Double |
| Integer | Integer、Long、Decimal、Single、Double |
| Long | Long、Decimal、Single、Double |
| Decimal | Decimal、Single、Double |
| Single | Single、Double |
| Double | Double |
| 任何枚举类型 | 其基础 Integer 类型以及它将扩大到的任何类型 |
| Char | Char、String |
| 任意类型 | Object、它实现的任何接口 |
| 任何派生类型 | 它所派生自的任何基类型 |
| Nothing | 任何数据类型或对象类型 |
下列转换可能会丢失精度:
- Integer 到 Single
- Long 到 Single 或 Double
- Decimal 到 Single 或 Double
然而,这些转换不会丢失信息或量级。
扩大转换始终能成功,并且您总是可以隐式执行扩大转换。
使用强制类型转换进行显式转换
显式转换使用类型转换关键字。Visual Basic .NET 提供了多个这样的关键字,这些关键字会将括号中的表达式强制到您所希望的数据类型。这些关键字相当于函数,但编译器会生成内联代码。因此,使用显式转换与使用函数调用相比,执行速度要稍快一些。
下表列出了可用的转换关键字。
收起该表格展开该表格
| 类型转换关键字 | 将表达式转换为 数据类型 | 允许转换的表达式数据类型 |
|---|
| CBool | Boolean | 任意数值类型(包括 Byte 和枚举类型)、String、Object |
| CByte | Byte | 任意数值类型、任意枚举类型、Boolean、String、Object |
| CChar | Char | String、Object |
| CDate | Date | String、Object |
| CDbl | Double | 任意数值类型(包括 Byte 和枚举类型)、Boolean、String、Object |
| CDec | Decimal | 任意数值类型(包括 Byte 和枚举类型)、Boolean、String、Object |
| CInt | Integer | 任意数值类型(包括 Byte 和枚举类型)、Boolean、String、Object |
| CLng | Long | 任意数值类型(包括 Byte 和枚举类型)、Boolean、String、Object |
| CObj | Object | 任意类型 |
| CShort | Short | 任意数值类型(包括 Byte 和枚举类型)、Boolean、String、Object |
| CSng | Single | 任意数值类型(包括 Byte 和枚举类型)、Boolean、String、Object |
| CStr | String | 任意数值类型(包括 Byte)、Boolean、Char、Char 数组、Date、Object |
| CType | 在逗号 (,) 之后指定的类型 | 在转换到基本类型(包括基本类型的数组)时,对于转换关键字所允许的相同类型。
当转换到复合类型时,它所实现的接口以及它所继承的类。 |
更改默认的项目值
可以根据每个项目的类型,更改
Option Explicit 和
Option Strict 的默认值。例如,当您创建新的 Visual Basic .NET 应用程序时,
Option Explicit 的值被设置为
On。可以将此默认值更改为
Off。
要更改
Option Explicit 和
Option Strict 的默认值,请按照下列步骤执行操作:
- 在系统上找到下列项目模板文件:
- EmptyProjectIPF.vbproj
- EmptyWebProjectIPF.vbproj
- WebApplication.vbproj
- WebControl.vbproj
- WebService.vbproj
- WindowsApplication.vbproj
- WindowsControl.vbproj
- WindowsService.vbproj
- 在记事本中打开一个项目模板。
- 在模板的 <Settings> 部分添加(或者如果已经存在,则编辑)OptionStrict 和 OptionExplicit 行。
例如,下面的代码说明了如何将 OptionExplicit 设置为Off 以及将 OptionStrict 设置为 On:
<VisualStudioProject>
<VisualBasic>
<Build>
<Settings
OutputType = "Exe"
StartupObject = ""
OptionExplicit = "Off"
OptionStrict = "On"
>
- 对于您希望更改其默认行为的每个项目模板,重复步骤 2 和 3。
文章编号: 311329 - 最后修改: 2003年9月15日 - 修订: 2.1
这篇文章中的信息适用于:
- Microsoft Visual .NET 2002 标准版
- Microsoft Visual Basic .NET 2003 标准版
| kbinfo kbbug kbupgrade kbdebug kbcompiler kbideproject KB311329 |
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。