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

文章翻译 文章翻译
文章编号: 311329 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文描述了两个 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。

属性

文章编号: 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和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com