【发布时间】:2012-10-21 16:49:30
【问题描述】:
一段时间以来,我一直在尝试确定为什么 Object 类有一个公共的、无参数的构造函数,或者实际上为什么它没有标记为 abstract。
我看不出有必要(显式)调用Object 的公共构造函数的合理情况;我们只对派生类型的构造函数感兴趣。
我理解需要在Object 中提供一个默认构造函数,以便为每个其他Type 提供一个可以隐式或显式调用的默认构造函数。当然,这个默认构造函数只需要标记为protected,不是吗?
我见过人们在线程同步中构造“空对象”;但是在这种情况下锁定“真实对象”不是更正确吗?
同样,由于Object 类公开的功能只对派生类型有用(或静态调用),为什么它不是抽象类呢?这似乎是一个更好的设计,而不是让程序员觉得它可以自己有意义地实例化的类。
我怀疑答案可能与 CLR 的内部工作有关,但我想知道为什么Object 有必要拥有一个公共构造函数,以及它是否有任何理由不能标记为abstract。
【问题讨论】:
-
您不能将构造函数标记为抽象,尽管您可能打算将类标记为抽象
-
@RuneFS 是的,我就是这个意思。作为使构造函数受保护的替代方法,使类抽象会产生相同的结果。
标签: c# object abstract-class default-constructor