万物之父Object
Contents
object万物之父
- object是所有类型的基类
- object是引用类型
- 可以用来传 不确定类型的参数 通过is和as 判断和转换
- 存在装箱拆箱
装箱和拆箱
- 装箱 就是把值类型存入引用类型中(值类型转引用类型)
- 拆箱 就是把值类型从引用类型中取出来(引用类型转值类型)
//object是引用类型
object a = 3;//装箱
int b = (int)a;//拆箱object中的静态方法
判断连个对象是否相等的方法Equals
- 不管值类型还是引用类型 都会按照左侧对象Equals方法的规则来进行比较
- 返回值是一个bool值
- 引用类型默认比较的是内存地址是否相同
Object.Equals(1,1);获取对象类型GetType
- 通过反射获取类型
- 主要就是在运行时获取对象的类型Type
Test t = new Test();
//因为所有的类型都继承自object 所以可以使用GetType();
Type type = t.GetType();克隆方法MemberwiseClone
- 引用类型赋值 是将指向该对象的内存地址 “赋值”过去
- 该方法用于获取对象的浅拷贝对象(返回一个新的对象)
- 浅拷贝:被拷贝对象里面的引用类型变量不会被拷贝
- 新对象中的引用变量和老对象指向的地址相同
Test t = new Test();
Test t2 = t.MemberwiseClone();object中的虚方法
Equals
- 默认实现还是比较两者是否为同一个引用,我们可以重写该方法自定义比较相等的规则
- 微软在所有的值类型基类System.ValueType中重写了该方法,用来比较值相等
GetHashCode
- 该方法可以获取对象哈希码
- 一种通过算法算出的,表示对象的唯一编码,不同的对象哈希码有可能一样
- 可以通过重写该函数来自定义对象的哈希码算法
- 使用极少 不会使用
ToString
- 该方法用于返回当前对象代表的字符串,我们可以重写它来定义自己的对象转字符串规则
- 该方法很常用 调用打印方法时 默认调用的就是对象的ToString方法