[英]Letting implicit derived class constructor call base class constructor
public abstract class A {
public A() {
// do stuff
}
}
public class B : A {
// let implicit constructor of class B also call base()
}
我希望我的派生类的隐式构造函数调用 base()。 如何在不为派生类 B 创建显式构造函数的情况下在 c# 中完成此操作?
它已经做到了; 让我们通过sharplab.io运行您的代码并查看B
的IL:
.class public auto ansi beforefieldinit B
extends A
{
// Methods
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method begins at RVA 0x2058
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void A::.ctor()
IL_0006: ret
} // end of method B::.ctor
} // end of class B
我们可以在这里看到B
有一个公共无参数构造函数,它调用A
的无参数构造函数(在IL_0001
)。 本质上,
public class B : A {
}
是简写
public class B : A {
public B() : base() {}
}
它总是隐式调用基类的构造函数。 你可以检查一下:
public abstract class A {
public A() {
Console.WriteLine("Class A");
}
}
public class B : A {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.