Contents

万物之父Object

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方法