'Option Strict'设置为'关闭'

时间:2013-05-24 18:20:23

标签: vb.net

我已阅读Jeff Atwood的博文 Option Strict and Option Explicit in VB.NET 2005

我对以下声明感兴趣:“您应该始终为每个应用程序启用Option Strict On”。

我同意在面向对象的编程语言中,这应该设置为ON。但是,我看到的每个应用程序似乎都将其设置为OFF。我在网上找到的大多数代码片段似乎都暗示开发人员已经将其关闭,例如我看到了很多:

dim id as Integer = objDR("ID")

这里对象被隐式地转换为整数。

开发人员在决定关闭它时是否有特定的标准,或者只是为了与Visual Basic 6.0保持一致?

3 个答案:

答案 0 :(得分:1)

在VB6中,通常无法在编译时确定某些变量,字段或参数的类型。一些这样的存储位置实际上总是保存一种特定类型的物品;但是,有些人可能会在不同时间持有不同的东西。假设不相关的类型MoeLarry都具有名为Curly的属性,并且采用未指定类型的参数Foo的方法显示为Foo.Curly = 5。如果这样的方法可以传递MoeLarry,那么将代码干净地移植到VB.NET的Option Strict On方言将需要将其写为两个不同的重载:一个需要Moe,需要Larry,或MoeLarry进行修改才能实现与成员Curly的公共接口。如果这些方法可行,代码应该移植到VB.NET的Option Strict On方言。但是,一些现有的VB6代码无法修复;将此类代码移植到Option Strict Off方言可能比重新处理Option Strict On更容易。

在某些情况下,我会考虑在尝试移植现有的VB6代码时使用Option Strict Off是合理的,这些代码无法与Option Strict On兼容。但是,我认为没有理由创造任何需要大量使用该方言的新设计。许多与之相关的行为与.NET的新功能(如泛型)不能很好地交互,关系运算符不能产生一致的结果(例如“-1”大于-2且-2大于“-3”,但是“-1”小于“-3”),并且通常很难预测某段代码最终会做什么。

答案 1 :(得分:0)

MSDN answer

  

为所有编程元素指定数据类型称为强类型。当您设置Option Strict On时,Visual Basic会强制执行强类型。强烈建议这样做,原因如下:

     

它支持IntelliSense支持您的变量和参数。这允许您在键入代码时查看其属性和其他成员。

     

它允许编译器执行类型检查。这有助于捕获由于溢出等错误而在运行时失败的语句。它还捕获对不支持它们的对象的方法的调用。

     

它可以加快代码的执行速度。其中一个原因是,如果没有为编程元素指定数据类型,Visual Basic编译器会为其指定Object类型。您编译的代码可能必须在Object和其他数据类型之间来回转换,这会降低性能。

答案 2 :(得分:0)

来自MSDN

  

在IDE中设置警告配置

     

当您使用编译页面,项目设计器(Visual Basic)时   在Option Strict语句中,您可以对   产生错误的条件。警告配置部分   “编译页面”具有与三个条件对应的设置   当Option Strict打开时导致编译时错误。以下   是这些设置:

Implicit conversion

Late binding; call could fail at run time

Implicit type; object assumed
     

当您将Option Strict设置为On时,所有这三个警告   配置设置设置为错误。将Option Strict设置为时   关闭,所有三个设置都设置为无。

     

您可以单独将每个警告配置设置更改为   无,警告或错误。如果全部三个警告配置设置   设置为Error,On出现在Option strict框中。如果全部三个   设置为“无”,此框中显示“关闭”。对于任何其他组合   这些设置(自定义)出现。