簡體   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