为什么.Net中的每个类都派生自System.Object?有什么好处?

Ram*_*Ram 8 .net c#

为什么.Net中的每个类都派生自System.Object?有什么好处?

Chr*_*ich 5

我向你提出相反的问题:为什么不呢?如果不是某个共同的祖先,您将如何引用“任何类型的某个对象”?有时这是需要的。不过,实际上,System.Object该类确实有一些有用的方法,它们通常对任何类型都有用:

  • Equals 有助于测试平等
  • GetHashCode 有助于提高集合性能
  • GetType - 所有对象都有某种类型
  • Finalize 支持CLR定型

因为这些东西对所有类型都是通用的,所以您可以拥有对多种类型智能操作的代码(甚至在泛型之前)。

尽管如此,在 C# 4.0 中,他们已经引入dynamic了它自己的真正的类层次结构。它完全绕过了静态类型检查,并且不一定来自object. MSDN 有一篇关于它的好文章Chris Burrows 的博客系列也很有趣。