总结
豆包 AI 助手文章总结

详解C#中==、Equals、ReferenceEquals的区别

黄舟
发布: 2016-12-14 17:41:48
原创
1567人浏览过

本文导读:

C#中Equals , == , ReferenceEquals都可以用于判断两个对象的个体是不是相等,对于相同的基本值类型,==和Equals()比较结果是一样的;由于ReferenceEquals()是判断两个对象的引用是否相等,对于值类型,因为每次判断前都必须进行装箱操作,也就是每次都生成了一个临时的object,因而永远返回false。

一、== 运算符

1、静态相等符号,对应存在的!=,这个符号是一个可以重载的二元操作符,可以用于比较两个对象是否相等。

2、它会根据需要自动进行必要的类型转换,并根据两个对象的值是否相等返回true或者false。

3、对于引用对象比较其引用(string引用类型除外,string是比较值)

4、对于值类型比较其值

5、某些内置的引用类型重载了==符号,例如string就重载==,使其比较的不是两个字符串的引用,而是比较的两个字符串字面量是否相等。

6、例如:

int i = 5;
int j = 5;
Console.WriteLine(i == j);//值类型比较代数值 输出True
  
int m = 6;
double n = 6.0;
Console.WriteLine(m == n);//类型自动转换并比较数值 输出True 
  
object obj1 = new object();
object obj2 = new object();
Console.WriteLine(obj2==obj1);//引用类型比较引用 输出False
登录后复制

   

二、Equals

1、用于比较两个对象的引用是否相等。

2、然而对于值类型,类型相同(不会进行类型自动转换),并且数值相同(对于struct的每个成员都必须相同),则Equals返回 true,否则返回false。

3、对于引用类型,默认的行为与ReferenceEquals的行为相同,仅有两个对象指向同一个Reference的时 候才返回true。

4、可以根据需要对Equals进行重载

5、实例

int i = 5;
int j = 5;
Console.WriteLine(i.Equals(j));//值类型比较 输出True
  
int m = 6;
double n = 6.0;
Console.WriteLine(m.Equals(n));//类型不会自动转换并比较数值 输出False
  
object obj1 = new object();
object obj2 = new object();
Console.WriteLine(obj2.Equals(obj1));//引用类型比较 输出False
Console.WriteLine(obj2.Equals(string.Empty));//输出False,比较量对象的类型不同直接返回False
登录后复制

三、ReferenceEquals

1、Object的静态方法,比较两对象的引用是否相等,值类型和引用类型都是一样。

2、不能在继承类中重写该方法。原型是:public static bool ReferenceEquals(object objA, object objB);FCL已经帮我们实现。它就是比较引用指向的内存地址是否一样。

3、对于2个值类型,ReferenceEquals永远都为false,因为使用ReferenceEquals(object a,object b)方法后值类型被重新装箱为新的引用类型实例,自然不会引用相等。

4、对于2个引用类型,ReferenceEquals则会比较它们是否指向同一地址。

5、实例

int i = 5;
 int j = 5;
 Console.WriteLine(object.ReferenceEquals(i, j));//输出False
 
 int m = 6;
 double n = 6.0;
 Console.WriteLine(object.ReferenceEquals(m, n));//输出False
 
 object obj1 = new object();
 object obj2 = new object();
 Console.WriteLine(object.ReferenceEquals(obj1, obj2));//输出False
登录后复制

   

以上就是==、Equals、ReferenceEquals的区别,希望对大家的学习有所帮助, 更多相关文章请关注PHP中文网(www.php.cn)!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
豆包 AI 助手文章总结
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号