为什么.Net中的每个类都是从System.Object派生而来?这样做有什么好处呢?
System.Object
类确实有一些对于任何类型都有用的有用方法:
Equals
用于测试相等性GetHashCode
用于集合中的性能GetType
- 所有对象都有某种类型Finalize
支持CLR终结dynamic
,它实际上是自己的类层次结构。它完全绕过静态类型检查,并不一定派生自object
。MSDN有一篇好文章讲解它,而Chris Burrows的博客系列也很有趣。SomeClass obj = new SomeClass();
void* pObj = &obj;
你可以通过继承来使用引用类型(以及通过装箱使用值类型,但那并不是完全相同的东西)作为参考:
object pObj = obj;
当然还有其他好处,但我主要看到过将object
用作空指针的替代品。
没有这种行为:
此外,如果我没记错的话,.NET的整个内存管理模型都围绕System.Object类型展开。