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);
    }
}

如果不是,微软为什么要为他们的设计者生成的代码选择第一种方法?

编辑:我的意思是,在初始化组件和将其添加到容器之间的顺序更改是否会有任何副作用?

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

我相信两者的调用顺序会有所不同。我相信第二种,首先调用this(),然后调用方法的内容。这意味着 InitializeComponent() 将在 container.Add 之前调用。

虽然这可能不会产生很大的不同,但它仍然是一个不同的地方。

于 2009-02-12T15:40:15.240 回答