2012-06-28 269 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

像这样的链式构造函数肯定不会创建额外的对象实例。

只需要为特定部分的初始化编写代码一次。这是一个常用且有效的初始化模式。