如何同时调用当前类和父类的构造函数?

时间:2010-05-04 02:14:11

标签: c#

public class A{
    List m;
    public A(int a, int b) {m=new List(); ...}
}


public class B : A{
    List a;
    List b;
    public B(){...}  //constructor1
    public B(int a, int b) : base(a,b){...} //constructor2
}

我的问题是我需要在类B中初始化列表a和b。如果我将它们放在构造函数1中,我如何在构造函数2中调用构造函数1?我不想再次在构造函数2中重写初始化语句。谢谢!

3 个答案:

答案 0 :(得分:5)

听起来,你只是在心理上向后倾斜。我想你想做的是:

public class B : A {
    List _a;
    List _b;

    public B(int a, int b) : base(a, b) {
        // this calls the base constructor

        // presumably you're initializing _a and _b in here?
        _a = new List();
        _b = new List();
    }

    // let x and y be your defaults for a and b
    public B() : this(x, y) {
        // this calls the this(a, b) constructor,
        // which in turn calls the base constructor
    }
}

答案 1 :(得分:1)

将它们放在constructor2中并使constructor1调用构造函数2?或者在内联而不是在构造函数中初始化它们?有很多方法可以给这只猫上皮。

答案 2 :(得分:1)

如果您有必须在多个构造函数中执行的初始化活动,请将它们放入单独的私有方法中,并从需要这些活动的任何构造函数中调用该方法。我不明白父的构造函数与它有什么关系,或者你为什么要从另一个构造函数调用它。