当我们创建一个产品类
时class Product
{
}
我从不同的博客和书籍中学到了Object
类是每个类的超级/基类/父类,包括用户定义的类。
这是怎么回事?
我认为它由.NET Framework处理?如果是这样,那么我很想知道这是怎么发生的。
答案 0 :(得分:5)
根据MSDN:
支持.NET Framework类层次结构中的所有类,并为派生类提供低级服务。这是.NET Framework中所有类的最终基类;它是类型层次结构的根。
为什么你不能看到'这在代码中:
语言通常不需要类声明从Object继承,因为继承是隐式的。
简而言之,.Net类型系统隐含了这一点。
答案 1 :(得分:3)
是的,它由.Net Framework负责。当程序运行时,每个Type inf都存储在内存中的特殊表中。并且类型记录包含指向基类记录的链接。不是从任何类派生的每个类型都包含指向对象记录的链接。
通过这种方法,每个类型都有方法,这些方法在MethodTable中定义(在运行.Net框架时也在内存中)作为对象类的方法。例如GetHashCode
或Equals
答案 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
是声明的类型。