让隐式派生类构造函数调用基类构造函数

操作系统
public abstract class A {
  public A() {
    // do stuff
  }
}

public class B : A {
  // let implicit constructor of class B also call base()
}

我希望派生类的隐式构造函数调用base()。我如何在c#中完成此操作而不为派生类B创建显式构造函数?

马克·格雷韦尔

它已经做到了;让我们通过sharplab.io运行代码,并查看IL B

.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() {}
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从派生类构造函数调用基类构造函数

从Java中的派生类调用基类构造函数

从模板派生类调用模板基类的构造函数

在声明派生类时调用基类的构造函数

从派生类调用构造函数

在派生类 C++ 的构造函数中调用基类的构造函数

如何在Scala中从派生类辅助构造函数调用辅助基类构造函数?

是否可以从基类构造函数调用派生类构造函数?

C ++派生类构造函数调用基类构造函数错误

如何使用指向函数的指针在基类构造函数中调用派生类的方法?

在派生构造函数中的某些代码块之后,在派生类中调用基类构造函数

C#-在派生类中调用基类和类构造函数

复制派生类的构造函数,更改基类

从派生类访问模板基类的构造函数

从派生复制构造函数调用基类的移动构造函数

与基类构造函数相比,何时调用Java隐式构造函数?

为什么派生类可以调用基类构造函数两次?

防止在无效的派生类初始值设定项上调用基类构造函数

基类构造函数在Java中调用重写方法时派生类对象的状态

调用基类的构造函数而不在派生类中定义它

我可以从基类调用派生类构造函数吗?

如何在模板派生类中调用模板基类的构造函数?

如何在C ++中从基类构造函数调用派生类方法?

(为什么)在纯虚拟派生类中是否需要虚拟基类构造函数调用?

在基类构造函数中使用派生类属性

使用CRTP时如何调用派生类的构造函数?

未调用派生类的c ++ / cli静态构造函数

从派生类调用重载的基本构造函数

C ++为什么基类/结构构造函数不能有多个参数可以从派生隐式调用?