public class Animal
{
public Animal()
{
"animal ctor".Dump();
}
}
public class Cat :Animal
{
public Cat():this("gray")
{
"cat ctor".Dump();
}
public Cat(string c):base()
{
"cat ctor2".Dump();
}
}
void Main()
{
Cat a = new Cat();
}
该代码的输出为:
animal ctor
cat ctor2
cat ctor
我了解第一行。
首先调用Animal Ctor,然后再调用Cat ctor调用字符串重载public Cat(string c):base()
-但这还调用base的构造函数。
那么,为什么我再也看不到animal ctor
(:base()
)?
构造函数仅被调用一次:
Cat()
构造函数调用Cat(string c)
Cat(string c)
正在调用基本构造函数Cat(string c)
被执行(是base的调用者)Cat()
执行构造函数基本上,如果调用基本构造函数(或类中的另一个构造函数),则在构造函数之前执行该代码。有关更多详细信息,请参见文档
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句