引用类型和值类型
参考链接:https://www.cnblogs.com/tonytonglx/articles/2080726.html、
一 4种判断相等函数:
判等函数实现判等的原则:自反,对称,传递
静态 ReferenceEquals:public static bool ReferenceEquals( object left, object right );比较地址;若是值类型则会被装箱
静态Equals: public static bool Equals( object left, object right ); 内部先判断类型,在判断是否null 最后调用实例Equals
实例的Equals:public override bool Equals( object right );
==操作符
总结 默认都是比较地址的 可是string和值类型内部重载了 实例的equals和== 静态 ReferenceEquals比较地址,静态Equals内部调用 实例的Equals:分为引用和值类型;若引用则是比较地址若为值类型比较值 其中string和值类型重写此方法
==操作符 :值类型比较值引用类型比较地址
二 各种类型对应的相等函数
引用类型
单独类型: 静态ReferenceEquals比较内存地址,静态Equals内部调用 实例的Equals,实例的Equals:引用则比较成员,==比较地址
嵌套值类型:
值类型
单独类型: 静态ReferenceEquals比较内存地址 (需要装箱)静 态Equals内部调用 实例的Equals,实例的Equals:比较值 ,==比较值
嵌套引用类型:需要自己实现实例的Equals 比较内部引用的值