1、==
对于预定义的值类型,如果操作数的值相等,则相等运算符 () 返回 true,否则返回 false。 对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。 对于 string 类型, 比较字符串的值
2、Equals
1)对于值类型,判断值是否相等
2)对于引用类型,判断是不是同一个实例,和ReferenceEquals用法相同
3、ReferenceEquals,判断是不是同一个实例
1)对于值类型,要先进行装箱,转换成object类型,然后再判断是不是同一个实例
因为实例就是对象,对象是引用类型中的概念,值类型没有对象的概念,判断是不是同一个实例,就是判断栈上引用所指向的堆上的对象是不是同一个。(对于堆、栈,装箱不清楚的话,请参考这篇博文栈、堆、装箱图解)
2)对于引用类型,直接判断是不是指向的同一个对象就好