7

说我有以下内容:

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,而其他两个重载可以调用那个......或者这可能与拥有一个单独的私有方法一样吗?

4

2 回答 2

6

对此没有理想的解决方案。有一种方法可以避免在Derived构造函数中重复代码,但是你必须重复m参数的默认值:

public Derived (string s, int n) : this(s, n, 0) {}
于 2011-02-26T12:24:49.073 回答
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    
    }
}
于 2011-02-26T12:22:13.263 回答