说我有以下内容:
class Base {
public Base (int n) { }
public Base (Object1 n, Object2 m) { }
}
class Derived : Base {
string S;
public Derived (string s, int n) : base(n) {
S = s;
}
public Derived (string s, Object1 n, Object2 m) : base(n, m) {
S = s; // repeated
}
}
注意我在Derived的两个重载中都需要正式参数n,因此我必须重复N = n;
行。
现在我知道这可以封装到一个单独的方法中,但是你仍然需要从两个重载中进行相同的两个方法调用。那么,是否有一种更“优雅”的方式,可以将this
与base
结合使用?
这样我可以让一个私有构造函数接受一个参数s
而另外两个重载可以调用那个......或者这可能与拥有一个单独的私有方法相同? / p>
答案 0 :(得分:5)
没有理想的解决方案。有一种方法可以避免重复Derived
构造函数中的代码,但是您必须重复m
参数的默认值:
public Derived (string s, int n) : this(s, n, 0) {}
答案 1 :(得分:0)
只有轻微的改善,但......
class Derived : Base
{
string S;
public Derived(string s, int n) : this(s,n,-1)
{
}
public Derived(string s, int n, int m) : base(n, m)
{
S = s;
// repeated
}
}