2009-02-12 2 views
2

Есть ли практическая разница с точки зрения воздействия на компонентной модели между:InitializeComponent в обоих конструкторах или в одном с наследованием конструктора?

class MyComponent : Component { 
    public MyComponent() { 
     InitializeComponent(); 
    } 

    public MyComponent(IContainer container) { 
     container.Add(this); 
     InitializeComponent(); 
    } 
} 

и:

class MyComponent : Component { 
    public MyComponent() { 
     InitializeComponent(); 
    } 

    public MyComponent(IContainer container) : this() { 
     container.Add(this); 
    } 
} 

и если нет, то почему Microsoft выбрать первый способ их дизайнер сгенерированный код ?

Редактировать: Я имею в виду, будут ли какие-либо побочные эффекты в отношении изменения порядка между инициализацией компонента и добавлением его в контейнер?

ответ

1

Порядок выполнения отличается. В

public MyComponent(IContainer container) { 
    container.Add(this); 
    InitializeComponent(); 
} 

InitializeComponent() выполняется послеcontainer.Add(), в то время как здесь

public MyComponent(IContainer container) : this() { 
    container.Add(this); 
} 

container.Add() выполняется после InitializeComponent()

+2

Но делает ли это какое-либо значение с точки зрения влияния на модель компонента? Вероятно, мне следовало бы более ясно сказать об этом. –

0

Я считаю, что порядок вызова будет отличаться между ними. Я верю во второй, этот() вызывается первым, а затем содержимое метода. Это означает, что InitializeComponent() будет вызываться перед container.Add.

Хотя это не может иметь большого значения, тем не менее это разница.

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