2014-10-05 54 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