重学C#-类型基础-所有的类型都从System.Object派生

所有的类型都从 System.Object 派生

“运行时”要求每个类型最终都从 System.Object 类型派生。
以下两个定义完全一致

1
2
3
4
5
6
7
8
9
// 隐式派生于 System.Object
class Employee{
...
}

// 显式派生于 System.Object
class Employee : System.Object{
...
}

由于所有的类型都从 System.Object 中派生,所以每个类型都保证了一组最基本的方法。

  1. 公共方法
    • Equals
    • GetHashCode
    • ToString
    • GetType
  2. 收到保护方法
    • MemberwiseClose
    • Finalize CLR 要求所有的对象都用 new 操作符创建
1
Employee e = new Employee("Parama");

new 操作符会做以下事情

  1. 计算类型及其所有的基类(一直到 System.Object)和”同步块索引”.
  2. 从托管堆中分配类型所需要的字节数,从而分配对象的内存,分配的所有字节都设为 0
  3. 初始化对象的”类型对象指针” 和 “同步块索引” 成员
  4. 调用类型的实例构造器,传递在 new 调用中指定的实参(上述中的 “Parama”),每个类型的构造器负责初始化该类型定义的实例字段,最终调用 System.Object 的构造器(该构造器什么都不做,简单的返回)。
    new 执行了所有操作后,返回指向新建对象的一个引用(或指针)。

重学C#-类型基础-所有的类型都从System.Object派生
https://lshgame.com/2025/03/16/All_types_derive_from_SystemObject/
作者
SuHang
发布于
2025年3月16日
许可协议