在构造函数中使用“this”有什么意义?

时间:2014-11-24 17:25:26

标签: c# constructor

有人可以解释,这种结构有什么意义吗?

public class A
{
    public A(): this("..") {}
}

2 个答案:

答案 0 :(得分:7)

构造函数使用指定的参数调用另一个构造函数后

: this(…)。例如:

public class A
{
    public A (string foo)
    {
        Console.WriteLine(foo);
    }

    public A () : this("foo bar")
    {}
}

这将允许您创建A的对象并传递字符串以自定义其输出;或者你可以在没有参数的情况下调用它,这会导致第二个构造函数被调用,第二个构造函数本身调用第一个以"foo bar"为参数的构造函数。

A从其他类继承时,还会使用另一个类似的关键字。在这种情况下,您可以使用base而不是this直接从基类调用构造函数:

public class A : B
{
    public A () : base("foo bar")
    {}
}

因此,当您现在创建A的对象时,A的构造函数将调用B的构造函数,该构造函数接受一个字符串并在那里传递"foo bar"

有关详细信息,请参阅C#编程指南的“Using constructors”部分。

答案 1 :(得分:3)

如果调用无参数构造函数,它将调用接受单个字符串的构造函数,并传递".."。在你的情况下,虽然没有这样的构造函数,所以代码不会编译。