3

コンポーネントモデルへの影響に関して、以下の間に実際的な違いはありますか?

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 はデザイナーが生成したコードに最初の方法を選んだのでしょうか?

編集:つまり、コンポーネントの初期化とコンテナへの追加の間に順序の変更に対する副作用はありますか?

4

2 に答える 2

3

実行順序が異なります。の

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

InitializeComponent()の後 に実行されcontainer.Add()ますが、ここでは

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

container.Add()後に実行されますInitializeComponent()

于 2009-02-12T15:40:10.560 に答える
0

呼び出しの順序は2つで異なると思います。私は2番目のものを信じています。this()が最初に呼び出され、次にメソッドの内容が呼び出されます。これは、InitializeComponent()がcontainer.Addの前に呼び出されることを意味します。

それは大きな違いにはならないかもしれませんが、それでも違いです。

于 2009-02-12T15:40:15.240 に答える