VB.Net变量声明

时间:2010-06-10 14:32:25

标签: vb.net variable-declaration

我注意到这两个编译都没有任何编译器警告或错误,即使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#之类的其他语言更加一致,只是想知道是否有一种方法比另一种更好。我想这真的是个人选择。

4 个答案:

答案 0 :(得分:4)

看看Option Infer On的奇迹,编译器自动计算出“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

答案 1 :(得分:2)

Option Infer是控制此编译器功能的原因。两者都是等价的 - 这类似于关于是否使用var关键字的(模拟)C#辩论。我的两分钱是留给个人开发者,但很多人可能会说要建立一个会议并遵循它。

答案 2 :(得分:2)

我做Dim x As New Exception("this is a test")。两个世界中最好的,没有推断,但你仍然只需要输入Exception一次:)

答案 3 :(得分:0)

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