.NET class 默认继承对象 class。如何?

.NET class inherits object class by default. How?

当我们创建 class 产品时

class Product
{
}

我从不同的博客和书籍中了解到,Object class 是每个 class 的 super/base/parent class,包括用户定义的 classes.

这是怎么发生的?

我假设它是由 .NET Framework 处理的?如果是这样,那么我很想知道这是怎么发生的。

根据MSDN

Supports all classes in the .NET Framework class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all classes in the .NET Framework; it is the root of the type hierarchy.

你为什么不在代码中 'see' 这个:

Languages typically do not require a class to declare inheritance from Object because the inheritance is implicit.

简而言之,.Net 类型系统会隐式执行此操作。

是的,它由 .Net Framework 负责。当程序为 运行 时,每个 Type inf 都存储在内存中一个特殊的 table 中。类型记录包含 link 到基本 class 记录。不是从任何 class 派生的每个类型都包含一个 link 对象记录。

通过这种方式,每个类型都有方法,这些方法在 MethodTable 中定义(当 .Net 框架是 运行 时也在内存中)作为对象的方法 class。例如 GetHashCodeEquals

当您想探索事情是如何发生的时,您总是可以更进一步,查看为每个方法生成的发出的元数据和 IL 代码。

例如,这是一个 Person class 和一个 属性, Name:

public class Person
{
    public string Name { get; set; }
}

当我们查看发出的 IL 时,我们看到 (using ILSpy) :

.class public auto ansi beforefieldinit ConsoleApplication2.Person
    extends [mscorlib]System.Object
{
   // Property declaration removed for brevity
}

编译器添加 extends [mscorlib]System.Object,其中 mscorlib 是声明的程序集,System 是命名空间,Object 是声明的类型。