繁体   English   中英

VB.Net变量声明

[英]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# )更加一致,只是想知道是否有某种很好的理由使一种方法优于另一种方法。 我想这真的是个人选择。

看到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

Option Infer是控制此编译器功能的因素。 两者是等效的-这类似于关于是否使用var关键字的COT辩论。 我的两分钱是让开发人员自己决定的,但是许多人可能会说要建立一个公约并遵守它。

我会做Dim x As New Exception("this is a test") 两全其美,没有推断,但您仍然只需要键入Exception一次即可:)

我认为第一个(带有变量类型声明)将是最安全的使用方式。 如果程序很小,则不会真正起作用,但是对于较大的程序,可能会有明显的编译器滞后。 因此(我认为)最好声明类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM