C# 对象初始值设定项

C# object initializer

我试图理解我的编程考试的一些代码,但我无意中发现了这个我似乎找不到解释的符号。 我搜索了 Whosebug、msdn 和几个在线教程,但没有成功。

代码是这样的:

class A
{
    public A(): this("b")
    {
        Console.WriteLine("c"); 
    }

    public A(string i)
    { 
        Console.WriteLine(i); 
    }
}

class B : A
{
    public B()
    { 
        Console.WriteLine("a"); 
    }
    ---------------
    static void Main(string[] args)
    { 
        A b = new A(); 
    }
}

这应该会打印出 "bc",但我什至无法理解继承和所有内容。我在这里找不到这个符号是做什么的:

public A(): this("b")
{
     Console.WriteLine("c"); 
}

我发现唯一看起来有点相似的是对象初始值设定项,但仅在一个在线教程中。为他们检查了 MSDN - 没有类似的代码。有人能帮忙吗?提前致谢!

这与对象初始化程序无关。大约 constructor-chaining。当任何方法(也包括构造函数)具有这样的 this(...) 时,您所说的是第一次调用具有类似签名的重载,因此在您的情况下 this("b") 将首先调用此 ctor:public A(string i).完成此调用后,该特定构造函数内的实际工作已完成,在您的示例中 Console.WriteLine("c");.