提问人:yretuta 提问时间:3/16/2010 最后编辑:Nate Barbettiniyretuta 更新时间:10/30/2019 访问量:49402
Option Strict 和 Option Explicit 有什么作用?
What do Option Strict and Option Explicit do?
问:
我看到了这个帖子:
错别字。。。请严格和明确地使用选项。在我作为顾问参与的一个软件开发项目中,他们到处都出现了大量错误......原来开发人员不会拼写,并且会用拼写不正确的声明变量。没什么大不了的,直到你在给它赋值时使用正确的拼写......并且您有明确的选项。哎哟......”
到底是什么?我已经用谷歌搜索了一下,但无法理解这个想法(因为主要是 Visual Basic,我正在做 PHP)。Option Strict
Option Explicit
答:
在此处查找详细信息:http://support.microsoft.com/kb/311329
Option Explicit 语句
由 默认值,Visual Basic .NET 或 Visual Basic 编译器强制执行 显式变量声明,其中 要求您声明每个 变量。更改 此默认行为,请参阅更改 “默认项目值”部分。
Option Strict 语句
由 默认值,Visual Basic .NET 或 Visual Basic 编译器不强制执行 严格的数据类型。要更改此设置,请执行以下操作 默认行为,请参阅 更改 “默认项目值”部分。
Option Explicit
表示必须声明所有变量。请看这里。否则,您可能会因为拼写错误另一个变量名称而意外声明一个新变量。这是当您尝试调试 VB 程序并找出程序无法正常工作的原因时引起很多悲伤的事情之一。在我看来,这甚至不应该是一个选项——它应该始终处于开启状态。
Option Strict
“将隐式数据类型转换限制为仅扩大转换范围”。请看这里。启用此选项后,您不会意外地将一种数据类型转换为另一种不太精确的数据类型(例如,从 an 到 a )。同样,默认情况下应打开该选项。Integer
Byte
评论
Option Explicit
Dim
Option Explicit off
TL;博士
Option Strict
并帮助您在设计时捕获潜在和实际错误,而不是在运行时编译代码并失败。您应该同时切换两者。Option Explicit
On
默认情况下,“严格选项”和“显式选项”处于关闭状态。要打开它们:
选项严格 .将其设置为 。Tools -> Options -> Projects and Solutions -> VB defaults -> Option Strict
On
选项显式 。勾选它。Tools -> Options -> Editor -> Require Variable Declaration
选项显式
使用 Option Explicit Off 时,您不必在使用变量之前声明 (Dim):
a = 123 'a is automatically declared as an Integer
当您在一个地方声明一个变量并认为您稍后会使用它但输入错误时,这会变得很危险:
Dim counter As Integer = 0
'some lines later...
countr = 55 'This creates a new variable called countr
或者更糟糕的是,你为一个你认为在范围内的变量赋值,但它不是,你最终声明了一个名称相同但作用域不同的新变量。
对于大量代码或长方法,这些很容易被遗漏,因此您应该始终将其打开以防止此类问题。
选项严格
使用 Option Strict Off,可以将数据类型隐式转换为缩小类型,而不会出现错误:
Dim d As Double = 999.99
Dim s As Single = d 'No error with Option Strict Off
对于这些情况,Option Strict 会向开发人员发出警告,以确保双精度值不应超过 。Single.MaxValue
您还可以将枚举分配给不正确的值,而不会出现错误。下面是一个真实的例子:
该变量应设置为 (24),实际上它将 State 设置为值 4,相当于 。EOpticalCalStates.FAILED
EOpticalCalStates.ALI_HOR
这样的事情不容易发现。
因此,默认情况下,应始终启用 Option Strict。此设置应该设置为默认值,但 Microsoft 决定将其关闭以增加向后兼容性(事后看来,这是一个错误的 IMO)。
如果在为新项目设置默认值之前已启动项目,则需要使用:
“项目”菜单 -> “属性...”item -> “编译”选项卡 -> 将“选项严格”设置为“打开”。
评论
Option Explicit
在其他答案中得到了完美的描述。我只是想让人们知道这似乎不再得到支持。参见:msdn.microsoft.com/en-us/library/aa338155(v=vs.60).aspxOption Strict