A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 翟盼盼 高级黑马   /  2013-3-8 17:15  /  2456 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

C#中equals和 ==的区别有哪些?

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

8 个回复

倒序浏览
值类型是存储在内存中的堆栈,而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
"==" 操作比较变量的值是否相等,  引用型变量表示的是两个变量在堆区中的16进制地址值是否相等。
"equals" 是比较对象在堆区中地址值(hash码)是否相同。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
C#中的==以及equals和Java中的正好相反
== 是判断值是否相同
equals 是判断地址是否相同
而string类型对象的==和equals 都是比较值,这是比较特殊的

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
操作符“==”在值类型情况下表示是否值相等.equals 判断是否是同一个对象的引用.
string的==和equals都是比较值。
回复 使用道具 举报
楼上说得挺全的,俺补充下下:Equals()方法还可以在比较时直接忽略大小写,方便了很多,
  1. //定义两课程
  2.             string kk1 = "JAVA";
  3.             string kk2 = "java";

  4.             //不区分大小写的字符串比较
  5.             if (kk1.Equals(kk2, StringComparison.OrdinalIgnoreCase))
  6.             {
  7.                 Console.WriteLine("喜欢的课程一样");
  8.             }
  9.             else
  10.             {
  11.                 Console.WriteLine("喜欢的课程不一样");
  12.             }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
equals是比较地址,,“==”是比较值
回复 使用道具 举报
岳珅 中级黑马 2013-3-11 21:13:31
9#
这个mark一下!谢谢你们,又多了解了些东东
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马