2011-11-04 103 views
3

obj這兩種初始化方法有什麼區別?我已經看到了這兩個,但知道是否有適當的時間來使用其中一個。我發現這個涵蓋C#的post,但不確定是否同樣適用於VB.Net。VB.Net中的類成員的這兩種初始化方法有什麼區別?

Public Class Class1 
    Sub New() 
    End Sub 

    Dim obj As New Object 
End Class 

VS

Public Class Class1 
    Sub New() 
     obj=New Object 
    End Sub 

    Dim obj As Object 
End Class 

我的道歉提前如果這一個副本。

回答

7

在這種情況下,沒有區別。主要區別在於如果您的構造函數執行其他操作 -

在這種情況下,內聯初始化(Dim obj As New Object)將在構造函數內的任何代碼之前發生。將初始化放在構造函數中可以讓你選擇初始化的順序。

2

這些樣本幾乎沒有什麼不同。在這兩種情況下,你的操作

  • 構造爲Class1被稱爲(在這種情況下Object
  • 基本構造函數被調用
  • obj下列順序分配一個值

在所有可能發生的情況都會導致產生相同的IL。

1

您的第一個版本是「聲明式」。它的優點是:

  1. 很容易看到字段是如何初始化的,因爲您不必在構造函數中查找它。
  2. 如果你有多個構造函數,你不需要重複自己。

你的第一個版本是「勢在必行」。它的優點是:

  1. 您可以準確控制它的創建時間。
  2. 您可以爲每個構造函數使用不同的版本。

我個人默認爲聲明式樣式代碼儘可能。

+0

確實很有幫助。如果可以的話,會兩次提高。 –

相關問題