之前面试有被问到这个问题,平时没去注意,回答的不好,在此整理一下。
在C#中,Object类型是所有类型的根。Object类型中一共有8个方法,重载的方法没有算进来:
构造函数
ToString()函数
GetHashCode函数
Equals函数
ReferenceEquals函数
Finalize函数
GetType()函数
MemberWiseClone()函数
下面一一来看看这些方法。
1、构造函数 public Object()
直接使用new Object()可以用来创建对象;如果非Object类型,则在该类型的构造函数被调用时,该函数自动被调用。
2、ToString()方法:是获取对象字符串表示的一种快捷方式。当只需要快速获取对象的内容,以进行调试时,就可以使用这个方法。
3、GetHashCode()方法:用作特定类型的哈希函数,快速生成一个与对象的值相对应的数字(哈希代码)。此方法适用于哈希算法和诸如哈希表之类的数据结构。
4、Equals()和ReferenceEquals()方法:
Equals用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写。
ReferenceEquals判断两个引用是否引用类的同一个实例。从描述也可以看出来,如果参数是值类型,则会装箱,比较的是装箱后的对象实例。
==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
5、Finalize()方法:允许对象在垃圾回收回收该对象之前尝试释放资源并执行其它清理操作。
6、GetType()方法:获取当前实例的确切运行时类型。
7、MemberWiseClone()方法:创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。