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");
.
我试图理解我的编程考试的一些代码,但我无意中发现了这个我似乎找不到解释的符号。 我搜索了 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");
.