lom*_*axx 24
不,一个类不能有虚拟构造函数.
拥有一个虚拟构造函数是没有意义的.在C#中构造对象的顺序是首先构造派生类,因此总是调用派生的构造函数,因为要调用的类在构造时是众所周知的.
另一件事是,如果您实际输入此代码,您可以很快发现它完全没有意义
如果你有:
public class BaseClass
{
public virtual BaseClass()
{
}
}
Run Code Online (Sandbox Code Playgroud)
然后
public class InheritedClass : BaseClass
{
//overrides baseclass constructor but why would you do this given that the
//constructor is always going to be called anyway??
public override InheritedClass()
{
}
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*ert 12
根据定义,虚方法是基于接收器的运行时类型分析而不是接收器的编译时静态类型分析来调度的方法.
构造函数是在创建特定类型的新实例时调用的方法.
由于新创建的对象的运行时类型始终与其编译时类型相同(*),因此不需要虚拟构造函数:运行时调度将始终选择与静态调度相同的方法,因此为什么要打扰区别?
(*)这不完全正确; 存在涉及COM互操作的场景,其中构造的运行时类型不是编译时类型.遗留互操作代码世界中很多东西都很奇怪.
| 归档时间: |
|
| 查看次数: |
14795 次 |
| 最近记录: |