引用类型和值类型

参考链接: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 比较内部引用的值

 

 

 

posted @ 2022-06-22 12:02  net技术的爱好者  阅读(23)  评论(0编辑  收藏  举报