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

Это действительный подход. Есть некоторые оговорки, в которых можно назвать новую функцию:

Конструктор Sub New может запускаться только один раз при создании класса. Он не может быть вызван явно нигде, кроме как в первой строке , код другого конструктора из одного класса или из производного класса .

Подробнее о object lifetime на MSDN.

+0

Самый тщательный ответ и благодарность за ссылку. Любовь чтение документации :) ... (не сарказм: P) – Chiramisu

4

Это совершенно допустимый и обычно используемый способ повторного использования кода конструктора. Создается только один объект.

1

Цепочки-конструкторы, подобные этому, не будут создавать дополнительные экземпляры объектов.

Желательно только один раз написать код для определенной части инициализации. Это общий и действительный шаблон инициализации.

Смежные вопросы