在 msdn 规范中,我注意到这System.Object
是 .Net 中的最终基类。他们说这System.ValueType
是一个抽象类,它继承System.Object
并覆盖了诸如等之类的方法……诸如Equals
等之类的Compare
值类型继承自所有其他继承自的.net对象。bool
int
System.ValueType
System.Object
我对此有两个问题。
- System.Object 需要什么?为什么这里没有首选界面?
我假设它只有 2 个直接子项(忽略我们可以创建更多),即 System.ValueType 和 System.ReferenceType 都具有完全不同的实现。
**编辑:**没有 System.ReferenceType。只有 Sytem.Object 和 Sytem.ValueType (覆盖基类)。在这里道歉。
所以可能需要 System.Object 来处理基本的 CLR 功能,例如使用 new() 创建对象、强制执行默认构造函数、GC 等?
- 当我反编译
Sytem
dll 并看到 bool 的实现时,我只看到一个结构。
对于一个类(比如异常),我看不到对 System.ReferenceType 或 System.Object 的继承。这种继承是如何处理的?
事实上,Common Type System 做了什么MyCustomClass
来使其继承System.Object
(因为继承是在编译时确定的,我认为 CTS 正在这样做)
如果我的理解有误,请随时纠正我/编辑帖子。