.NET类默认继承对象类。怎么样?

时间:2015-02-13 13:05:30

标签: c# .net object

当我们创建一个产品类

class Product
{
}

我从不同的博客和书籍中学到了Object类是每个类的超级/基类/父类,包括用户定义的类。

这是怎么回事?

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

3 个答案:

答案 0 :(得分:5)

根据MSDN

  

支持.NET Framework类层次结构中的所有类,并为派生类提供低级服务。这是.NET Framework中所有类的最终基类;它是类型层次结构的根。

为什么你不能看到'这在代码中:

  

语言通常不需要类声明从Object继承,因为继承是隐式的。

简而言之,.Net类型系统隐含了这一点。

答案 1 :(得分:3)

是的,它由.Net Framework负责。当程序运行时,每个Type inf都存储在内存中的特殊表中。并且类型记录包含指向基类记录的链接。不是从任何类派生的每个类型都包含指向对象记录的链接。

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

答案 2 :(得分:2)

如果您想探索事情的发生方式,您可以始终将其降低一步,并查看为每种方法生成的元数据和IL代码。

例如,这是一个Person类,其中包含一个属性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是声明的类型。