gpt4 book ai didi

c# - 具有公共(public)无参数构造函数的 Object 类有什么好处?

转载 作者:行者123 更新时间:2023-11-30 17:09:12 25 4
gpt4 key购买 nike

一段时间以来,我一直在尝试确定为什么 Object 类有一个公共(public)的、无参数的构造函数,或者实际上,为什么它没有被标记为 abstract

我看不出有必要(明确地)调用 Object 的公共(public)构造函数的合理情况;我们只对派生类型的构造函数感兴趣。

我理解需要在 Object 中提供一个默认构造函数,以便为每个其他 Type 提供一个可以隐式或显式调用的默认构造函数。当然,这个默认构造函数只需要标记为 protected,不是吗?

我见过人们在线程同步中构造“空对象”;但在这种情况下锁定“真实对象”不是更正确吗?

同样,既然Object类暴露的功能只对派生类型有用(或静态调用),为什么它不是抽象类呢?这似乎是一个更好的设计,而不是让一个类给程序员这样的印象,即它可以自行有意义地实例化。

我怀疑答案可能与 CLR 的内部工作有关,但我想知道为什么 Object 必须有一个公共(public)构造函数,以及是否有任何原因为什么它不能被标记为 abstract

最佳答案

确实可能与线程同步有关。参见 http://msdn.microsoft.com/en-us/library/ms173179.aspx

微软使用的事实

private System.Object lockThis = new System.Object();

在他们自己的例子中告诉我,在他们看来,仅仅为了同步的目的而创建一个新对象是完全正确的。

此外,Java 在其同步示例中允许完全相同的事情,因此 Microsoft 的开发人员可能只是“效仿”了看似标准的语言行为方式。

当然也有可能 CLR 中也有一些 secret 的技术原因。

关于c# - 具有公共(public)无参数构造函数的 Object 类有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13171326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com