我注意到,这两个编译没有任何编译器警告或错误,即使Option StrictOption 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#争论。我的两分钱是把它留给了个人开发者,但很多人可能会说,建立一个约定,并按照它。

我认为第一个(与可变类型声明)将是最安全的使用。如果程序很小,它不会真正有所作为,但对于较大的程序的,有可能是一个明显的编译器的滞后。因此,(在我看来)声明的类型是做的最好的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top