2014-10-05 58 views
-1

假設用下面的代碼的對象...優雅的圖案爲多個構造

Public Sub New() 
    Me.Name = "Default Name" 
    Initialize() 
End Sub 

Public Sub New(CustomName as String) 
    Me.Name = CustomName 
    Initialize() 
End Sub 

Private Sub Initialize() 
    'Initialize some other properties 
End Sub 

是否有此情況下,使用一個更優雅的方式?一種構造函數可以調用另一個構造函數並且不需要Initialize()方法的某種方式?

+0

'MyClass.New'會調用一個不同的ctor,比如簡單的一個接受一個字符串;所有的Initialize代碼都可以在那裏。 http://msdn.microsoft.com/en-us/library/b3b35kyk(v=vs.90).aspx – Plutonix 2014-10-05 23:25:41

回答

1

是的,你可以寫一個構造函數與所有需要的參數,然後用寫來Me.Constructor()的調用,其餘沒有方法別的提供默認值的塊。

Public Sub New(CustomName as String) 
    Me.Name = CustomName 
End Sub 

Public Sub New() 
    Me.New("Default Name") 
End Sub 
+0

正是我在找什麼。謝謝。 – DWRoelands 2014-10-05 23:36:52

1

我不確定在C#中有沒有用於構造函數鏈接的VB語法,但如果我沒有記錯,VB可以通過調用Me.New()來調用其他構造函數。這是一樣的事情。所以,你應該能夠做這樣的事情:

Public Sub New() 
    Me.New("Default Name") 
End Sub 

Public Sub New(CustomName as String) 
    Me.Name = CustomName 
    'Initialize some other properties 
End Sub