避免在重载的构造函数中重复
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);
}
我已经有一个构造函数测试,并尝试重载这个,代码如下:
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);
}