避免在重载的构造函数中重复

Avoid repetition in overloaded constructors

我已经有一个构造函数测试,并尝试重载这个,代码如下:

public Test(string a, string b, XXX c, XXX d){
    this.a = a;
    this.b = b;
    methodA(a, b, d);
}
public Test(string a, string b, XXX c, XXX d, String e){
    this.a = a;
    this.b = b;
    methodA(a, b, d, e);
}

methodA也是一个重载方法,如你所见“this.a = a; this.b = b;”那部分是重复的。我怎样才能避免这种情况?

您可以使用this()方法来避免代码重复。

所以你所拥有的已经非常接近你所需要的了。只需将 methodA(...) 调用更改为 this(...) 调用即可。

我什至会更进一步,正如 @Michael Berry and @Silvio Mayolo 的评论中所建议的那样,并将构造函数链接起来。最后的结果应该是这样的。

public Test(string a, string b, XXX c, XXX d, String e){
    this.a = a;
    this.b = b;
    this.c = c;
    this.d = d;
    this.e = e;
}
public Test(string a, string b, XXX c, XXX d){
    this(a, b, c, d, null);
}