可能的重复:
构造函数中的虚拟成员调用
首先,为什么在 C# 中调用 ctor 内的虚函数不会出错?
其次,如果允许的话,为什么Resharper仍然会发出警告?
至于为什么它不是错误,请从维基百科检查:
对于某些语言,尤其是 C++,虚拟调度机制在对象的构造和销毁期间具有不同的语义。虽然建议 C++ 避免在构造函数中调用虚函数 [3],但在其他一些语言中,例如 Java 和 C#,可以在构造过程中调用派生实现,并且抽象工厂模式等设计模式积极提倡这一点。支持该能力的语言的用法。
至于你问题的第二部分,ReSharper 对此发出了警告,因为虽然可能允许这样做,但如果你不知道自己在做什么,它可能会产生一些意想不到的结果。欲了解更多详情,请查看: