题
我注意到,这两个编译没有任何编译器警告或错误,即使Option Strict
和Option Explicit
均导通:
Dim x As Exception = New Exception("this is a test")
Dim y = New Exception("this is another test")
我的问题是,它是更合适的使用第一种方式(见变量x)或第二方式(见变量y)?我的猜测是,VB不需要As
子句由于可变代替被初始化,所以编译器可以推断出的类型。
我倾向于像第一种方式,因为它只是“感觉”的权利,并与其他语言如C#
,如果有一些很好的理由比其他的一种方式只是想知道更加一致。我想这是很私人的选择。
解决方案
我愿意做Dim x As New Exception("this is a test")
。两全其美,没有infering的,但你仍然只需要输入一次Exception
:)
其他提示
看哪选项推断,则编译器的数字去“Y”自动的类型的奇迹。因为VS2008可用。您可以通过关闭它得到你所寻找的错误:
Option Strict On
Option Infer Off
Module Module1
Sub Main()
Dim x As Exception = New Exception("this is a test")
Dim y = New Exception("this is another test") ''# error BC30209
Dim z As New Exception("this is a third test")
End Sub
End Module
Option Infer
是什么控制该编译器的功能。两者是等价 - 这类似于关于是否使用var
关键字(有争议)C#争论。我的两分钱是把它留给了个人开发者,但很多人可能会说,建立一个约定,并按照它。
我认为第一个(与可变类型声明)将是最安全的使用。如果程序很小,它不会真正有所作为,但对于较大的程序的,有可能是一个明显的编译器的滞后。因此,(在我看来)声明的类型是做的最好的事情。
不隶属于 StackOverflow