C#对象初始化器

时间:2015-09-07 15:01:08

标签: c# inheritance constructor object-initializers

我正在尝试理解我的编程考试的一些代码,我偶然发现了这个符号,我似乎无法找到解释。 我搜索过stackoverflow,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为他们 - 没有相似的代码。有人能帮忙吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

这与对象初始化器无关。它约为constructor-chaining。当任何方法(包括构造函数)都具有这样的this(...)时,你所说的第一次调用具有类似signatur的重载,所以在你的情况下this("b")将首先调用这个ctor:{{1 }}。完成此调用后,在您的示例public A(string i)中完成该特定构造函数中的实际工作。