你目前正处于脱机状态,正在等待 Internet 重新连接

INFO:Visual Basic .NET 中的 Option Explicit 和 Option Strict

概要
本文描述了两个 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
  • 晚期绑定。
返回页首

扩大转换

下表列出了标准的扩大转换。

数据类型扩大到数据类型
ByteByteShortIntegerLongDecimalSingleDouble
ShortShortIntegerLongDecimalSingleDouble
IntegerIntegerLongDecimalSingleDouble
LongLongDecimalSingleDouble
DecimalDecimalSingleDouble
SingleSingleDouble
DoubleDouble
任何枚举类型其基础 Integer 类型以及它将扩大到的任何类型
CharCharString
任意类型Object、它实现的任何接口
任何派生类型它所派生自的任何基类型
Nothing任何数据类型或对象类型

下列转换可能会丢失精度:
  • IntegerSingle
  • LongSingleDouble
  • DecimalSingleDouble
然而,这些转换不会丢失信息或量级。

扩大转换始终能成功,并且您总是可以隐式执行扩大转换。

返回页首

使用强制类型转换进行显式转换

显式转换使用类型转换关键字。Visual Basic .NET 提供了多个这样的关键字,这些关键字会将括号中的表达式强制到您所希望的数据类型。这些关键字相当于函数,但编译器会生成内联代码。因此,使用显式转换与使用函数调用相比,执行速度要稍快一些。

下表列出了可用的转换关键字。
类型转换关键字将表达式转换为
数据类型
允许转换的表达式数据类型
CBoolBoolean任意数值类型(包括 Byte 和枚举类型)、StringObject
CByteByte任意数值类型、任意枚举类型、BooleanStringObject
CCharCharStringObject
CDateDateStringObject
CDblDouble任意数值类型(包括 Byte 和枚举类型)、BooleanStringObject
CDecDecimal任意数值类型(包括 Byte 和枚举类型)、BooleanStringObject
CIntInteger任意数值类型(包括 Byte 和枚举类型)、BooleanStringObject
CLngLong任意数值类型(包括 Byte 和枚举类型)、BooleanStringObject
CObjObject任意类型
CShortShort任意数值类型(包括 Byte 和枚举类型)、BooleanStringObject
CSngSingle任意数值类型(包括 Byte 和枚举类型)、BooleanStringObject
CStrString任意数值类型(包括 Byte)、BooleanCharChar 数组DateObject
CType在逗号 (,) 之后指定的类型在转换到基本类型(包括基本类型的数组)时,对于转换关键字所允许的相同类型。

当转换到复合类型时,它所实现的接口以及它所继承的类。

返回页首

更改默认的项目值

可以根据每个项目的类型,更改 Option ExplicitOption Strict 的默认值。例如,当您创建新的 Visual Basic .NET 应用程序时,Option Explicit 的值被设置为 On。可以将此默认值更改为 Off

要更改 Option ExplicitOption Strict 的默认值,请按照下列步骤执行操作:
  1. 在系统上找到下列项目模板文件:
    • EmptyProjectIPF.vbproj
    • EmptyWebProjectIPF.vbproj
    • WebApplication.vbproj
    • WebControl.vbproj
    • WebService.vbproj
    • WindowsApplication.vbproj
    • WindowsControl.vbproj
    • WindowsService.vbproj
  2. 在记事本中打开一个项目模板。
  3. 在模板的 <Settings> 部分添加(或者如果已经存在,则编辑)OptionStrictOptionExplicit 行。

    例如,下面的代码说明了如何将 OptionExplicit 设置为Off 以及将 OptionStrict 设置为 On
    <VisualStudioProject>    <VisualBasic>        <Build>            <Settings                 OutputType = "Exe"                 StartupObject = ""                OptionExplicit = "Off"                OptionStrict = "On"            >						
  4. 对于您希望更改其默认行为的每个项目模板,重复步骤 2 和 3。
返回页首
casting option strict explicit
属性

文章 ID:311329 - 上次审阅时间:09/15/2003 18:17:00 - 修订版本: 2.1

Microsoft Visual .NET 2002 标准版, Microsoft Visual Basic .NET 2003 标准版

  • kbinfo kbbug kbupgrade kbdebug kbcompiler kbideproject KB311329
反馈