重学C#-类型基础-所有的类型都从System.Object派生
所有的类型都从 System.Object 派生
“运行时”要求每个类型最终都从System.Object类型派生。
以下两个定义完全一致
1 |
|
由于所有的类型都从System.Object中派生,所以每个类型都保证了一组最基本的方法。
- 公共方法
- Equals
- GetHashCode
- ToString
- GetType
- 收到保护方法
- MemberwiseClose
- Finalize
CLR 要求所有的对象都用 new 操作符创建new 操作符会做以下事情1
Employee e = new Employee("Parama");
- 计算类型及其所有的基类(一直到System.Object)和”同步块索引”.
- 从托管堆中分配类型所需要的字节数,从而分配对象的内存,分配的所有字节都设为0
- 初始化对象的”类型对象指针” 和 “同步块索引” 成员
- 调用类型的实例构造器,传递在 new 调用中指定的实参(上述中的 “Parama”),每个类型的构造器负责初始化该类型定义的实例字段,最终调用 System.Object 的构造器(该构造器什么都不做,简单的返回)。
new 执行了所有操作后,返回指向新建对象的一个引用(或指针)。
重学C#-类型基础-所有的类型都从System.Object派生
https://mufengbufeng.github.io/2025/03/16/类型基础-所有的类型都从Object派生/