2012-06-28 147 views
4

這是一個壞主意嗎?在公共構造函數中調用通用的私有構造函數是否會創建多個實例,或者這是初始化類變量的有效方法?構造函數內的構造函數

Private Class MyClass 
    Dim _msg As String 

    Sub New(ByVal name As String) 
     Me.New() 
     'Do stuff 
    End Sub 

    Sub New(ByVal name As String, ByVal age As Integer) 
     Me.New() 
     'Do stuff 
    End Sub 

    Private Sub New() 'Initializer constructor 
     Me._msg = "Hello StackOverflow" 
     'Initialize other variables 
    End Sub 
End Class 
+1

http://www.quickmeme.com/meme/3pwiuu/ – templatetypedef

回答

2

這是一種有效的方法。有一些注意事項可以調用新功能:

當創建類時,子新建構造器只能運行一次。它不能在明確調用 以外的任何位置,而不是在同一類或 派生類的另一個構造函數的第一行 代碼之外。

在MSDN上了解更多關於object lifetime的信息。

+0

最徹底的答案和謝謝你的鏈接。愛閱讀文檔:) ...(不諷刺:P) – Chiramisu

4

這是非常有效的,並且是重用構造函數代碼的常用方法。只有一個對象被實例化。

1

像這樣的鏈式構造函數肯定不會創建額外的對象實例。

只需要爲特定部分的初始化編寫代碼一次。這是一個常用且有效的初始化模式。