C#中的this()和base()构造函数

Spr*_*gue 7 .net multiple-constructors

似乎没有用于指定this()和base()构造函数的语言语法.给出以下代码:

public class Bar : Foo
{
    public Bar()
      :base(1)
      //:this(0)
    { }
    public Bar(int schmalue)
      :Foo(1)
    {
       //Gobs of initialization code
       ...
       Schmalue = schmalue;
    }

    public int Schmalue { get; private set; }
}

public class Foo
{
    public Foo()
    {
        Value = 0;
    }

    public class Foo(int value)
    {
        Value = value;
    }

    public int Value { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

编译器给出了一个错误,指出在取消注释:this(0)调用时预期'{'.这很麻烦,因为它导致我将我的代码分解为私有方法,当明确提供此功能以防止这样的事情.

我只是做错了吗?我试过没有分隔符,分号,逗号......这似乎只是开发团队的疏忽.我很感兴趣为什么这个被省略了,如果我以错误的方式解决这个问题,或者是否有人对替代方案提出了很好的建议.

Jef*_*nal 9

您可以通过在链的末尾调用基础构造函数来完成此操作:

public Bar(): this(0) {}
public Bar(int schmalue): base(1) {
    // ... initialize
}
Run Code Online (Sandbox Code Playgroud)