InitializeComponent v obou konstruktérů, nebo v jedné s dědičností konstruktoru?

hlasů
2

Je nějaký praktický rozdíl, pokud jde o účinky na modelu komponent mezi:

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

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

a:

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

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

a pokud ne, proč Microsoft vyzvednout první metodu pro své návrháře generovaného kódu?

Edit: Co mám na mysli, je, bude existovat nějaké vedlejší účinky vůči změně pořadí mezi inicializaci komponenty a přidáním do kontejneru?

Položena 12/02/2009 v 16:32
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Pořadí provedení liší. v

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

InitializeComponent()se provádí po container.Add() , zatímco tady

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

container.Add() je proveden po InitializeComponent()

Odpovězeno 12/02/2009 v 16:40
zdroj uživatelem

hlasů
0

Domnívám se, že pořadí vyvolání bude rozdíl mezi těmito dvěma. Věřím, že ve druhé, to () je volána jako první, pak se obsah této metody. To znamená, že InitializeComponent () bude volána před container.Add.

I když to nemusí mít obrovský rozdíl, to je rozdíl nicméně.

Odpovězeno 12/02/2009 v 16:40
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more