多个构造函数的优雅模式

时间:2014-10-05 23:16:55

标签: vb.net

假设一个对象具有以下代码......

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()方法的需要?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

是的,您可以编写一个包含所有必需参数的构造函数,然后通过调用Me.Constructor()来编写其余的构造函数,而不提供提供默认值的方法块中的任何其他内容。

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

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