CLR via c#类型基础

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

System.Object的公共方法:

1.Equals

如果两个对象具有相同的值,则返回true.但是如果比较的两个对象指向不同的引用,则返回false.

实质上,它表示的是同一性,而非相等性。

2.GetHashCode

返回对象值的一个哈希码

3.Tostring

默认返回类型的完整名称(this.GetType.FullName)

4.GetType

System.Object受保护类型:

1.MerberwiseClone

这个非虚方法创建类型的一个新实例,并于新对象的实例字段设与this对象的实例完全一致。返回的是新对象的一个引用。

2.Finalize

在对象的内存被实际回收之前,会调用这个需方法。

一个new操作背后所发生的事情:

Employee employee=new Emplyee("employee");

1.计算所有的类型以及基类型中定义的所有实例字段所需要的字节数,其中包括每个对象都需要的类型对象指针和同步块索引

2.在堆上分配指定类型所需要的类型要求的字节数,从而分配对象的内存,分配的所有字节都设置为零

3.初始化类型对象指针和同步块索引成员

4.调用类型的实例构造器,向其传入调用中指定的实参。大多数编译器都会在构造器中自动生成代码来调用一个基类的构造器,

每个类型构造器在调用时,都要负责初始化由这个类型定义的实例字段。最终调用的是Object的构造器。

最后会返回一个指向新建对象的一个引用(或指针)。

原文地址:https://www.cnblogs.com/chenxiaoran/p/2081143.html