概述VB.NET Option Strict

开发 后端
这里介绍VB.NET Option Strict,包括介绍编译器是否允许这种转换,决定于VB.NET Option Strict的设置,如果Option Strict设置为On,试图进行隐式缩窄的类型转换将会发生编译错误。

本文向大家介绍VB.NET Option Strict,可能好多人还不了解VB.NET Option Strict,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

VB.NET Option Strict和Option Explicit是针对编译器的语句。作为程序员总是想在程序编译期时候发现程序的错误,而不愿在运行期来发现。当一个程序成功编译以后,你可能会认为该程序已经通过所有编译期的错误检查,不会再有其它错误使你吓一跳。然而事实上,程序运行一次没有错误并不表明下次运行时是否会发生错误。因此,如果潜在的运行期的错误在编译期被及时发现,应用程序将变得非常稳定。Option Explicit语句决定编译器是否要求所有的变量被显式的声明,语法如下:

Option Explicit

如果选择On,则编译器是否要求所有的变量被显式的声明,如果选择Off,则编译器是允许变量的隐式声明。这样以来,可不是一件好事,比如在代码的编写过程中,不小心敲错了变量名,由于编译器允许变量的隐式声明,所以在程序编译的时候,是不会发生错误的,但是在运行期可能会发生不可预期的错误。因此在代码中最好不要用Option Explicit Off。Option Strict语句决定编译器类型的隐式转换方面的要求,语法如下:

VB.NET Option Strict

如果选择On,则编译器允许放宽的隐式类型转换,如果选择Off,则编译器是不仅允许放宽的类型转换,而且允许缩窄的类型转换。对于放宽的类型转换,一般不会发生数据的丢失或不正确的结果。例如,将一个整型(Integer)的变量转换为长整型(Long)的变量是一个放宽的类型转换,长整型可以包含所有整型变量的值。相反,从长整型向整型变量的转换是一个缩窄的类型转换,因为一些长整型的值是超出整型所表示的范围的。

VB.NET默认放宽的类型转换。例如在下面的代码的第二行中将会自动发生放宽的类型转换,赋值表达式右边的变量自动转换为长整型变量,以便能保存到变量b中。

  1. Dim a As Integer = 5 
  2. Dim b As Long = a 

自动发生的类型转换,称为“隐式类型转换”。

现在来考虑相反的情况:

  1. Dim a As Long = 5 
  2. Dim b As Integer = a 

上面代码的第二行,试图进行隐式缩窄的类型转换。编译器是否允许这种转换,决定于VB.NET Option Strict的设置,如果Option Strict设置为On,试图进行隐式缩窄的类型转换将会发生编译错误;设置为Off,编译器将自动在后台进行类型转换。这样在程序运行时,如果实际要转换的值超出目标类型的范围,将会导致程序抛出异常。

对于某些程序,有时进行缩窄的类型转换是必要的。因此程序员可能知道某个变量进行类型转换时,会超出目标类型的范围,而添加适当的代码来处理可能发生的异常。这种情况可以通过适当的函数来进行显式的类型转换,例如:

  1. Dim a As Long = 5 
  2. Dim b As Integer = CInt(a) 

上面的变换即称为“显式的类型转换”,因为程序员明确的要求进行整型变换。注意尽管从表面上来看,上面的代码与前面的“隐式类型转换”相比,多了一次函数调用,但是编译后的代码是一样的,所以执行的效率和隐式类型转换一样。

【编辑推荐】

  1. 简单分析VB.NET临时文件
  2. 详细描述VB.NET PadLeft方法
  3. VB.NET Shared变量经验总结
  4. 全面讲解VB.Net赋值语句
  5. 浅析VB.NET创建PPC客户端程序
责任编辑:佚名 来源: IT专家网
相关推荐

2009-10-14 16:04:43

VB.NET Noti

2010-01-13 10:53:24

VB.NET控件

2010-01-15 18:30:50

VB.NET Dlli

2010-01-18 10:33:28

VB.NET基本函数

2009-10-13 14:38:10

VB.NET访问类型

2010-01-15 10:47:15

VB.NET命名空间

2010-01-13 11:11:42

VB.NET Date

2009-10-14 09:29:43

VB.NET加密

2009-10-26 17:53:50

VB.NET新窗体

2010-01-20 18:14:58

VB.NET数据类型

2010-01-14 13:35:36

VB.NET特殊操作符

2010-01-18 13:46:32

VB.NET条件分支语

2010-01-13 11:03:13

VB.NET声音播放

2010-01-22 16:39:46

VB.NET添加自动查

2009-10-20 08:39:57

VB.NET输出函数

2009-10-28 14:00:02

VB.NET文件处理

2009-10-29 14:02:24

VB和VB.NET比较

2010-01-07 15:42:57

VB.NET WhilEnd While循环

2011-06-17 11:05:22

VB.NET

2009-06-24 15:45:32

VB.NET
点赞
收藏

51CTO技术栈公众号