繁体   English   中英

在父构造函数之前调用子类构造函数

[英]Calling child class constructor before parent constructor

是否可以在父类的构造函数之前调用子类的构造函数?

有人说使用虚拟方法确实可以,但我找不到这样做的方法。

在 IL,这是可能的。 在 C# 中:没有。

可以使用virtual到该类型的构造函数前一种类型的运行方法,但它是气馁和风险。 但:

class Foo {
    public Foo() {
        Console.WriteLine("Foo ctor");
        SomeMethod(); // BAD IDEA (calling a virtual method in a ctor)
    }
    protected virtual void SomeMethod() {}
}
class Bar : Foo {
    protected override void SomeMethod() {
        Console.WriteLine("SomeMethod in Bar");
    }
    public Bar() : base() { /* only to show call order */
        Console.WriteLine("Bar ctor");
    }
}

这是一个坏主意,因为您不能保证子类已准备好进行方法调用。

你想要完成的是什么? 也许你可以有一个从基类ctor调用的抽象方法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM