2008-11-16 75 views
6

我只是想知道兩個不同的新對象初始值設定項是否有區別,還是僅僅是語法糖。新{對象} vs {對象} =新{對象}

所以是:

Dim _StreamReader as New Streamreader(mystream) 

,並以不同的:

Dim _StreamReader as Streamreader = new streamreader(mystream) 

有引擎蓋下有什麼區別?或者他們都是一樣的?你更喜歡使用哪一個?

回答

14

在VB.NET中,它們是相同的。 As New變體是規範的。

在VB6中,它們的語義實際上是不同的(除了VB6不允許在聲明中賦值的明顯事實):As New變體將創建一個永遠不可能爲Nothing的對象。相反,運行時將確保對象在每次訪問之前始終正確初始化。

1

我不是VB的傢伙,但據我所知他們是相同的。據MSDN's description of the Dim statement

如果不指定數據類型,則 變量採用 初始化的數據類型。如果既沒有數據類型也沒有 初始值設定項,默認情況下, 數據類型是對象數據類型。如果 指定了數據類型和 初始值設定項,則數據類型 初始值設定項必須可轉換爲 數據類型。

我不會對偏好進行評論,因爲我不使用VB(除了在回答語句時)。

2

這些陳述是相同的。我個人更喜歡「Dim x as New」語法,因爲它更簡潔。沒有理由在沒有編程差異的情況下在相同的語句中編寫相同的類型名稱。它所做的只是讓你在鍵盤上花費更多時間:)