黑马程序员技术交流社区

标题: C#中equals和 ==的区别? [打印本页]

作者: 翟盼盼    时间: 2013-3-8 17:15
标题: C#中equals和 ==的区别?
C#中equals和 ==的区别有哪些?
作者: 廖新    时间: 2013-3-8 17:24
值类型是存储在内存中的堆栈,而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
作者: 张卫刚    时间: 2013-3-8 18:08
"==" 操作比较变量的值是否相等,  引用型变量表示的是两个变量在堆区中的16进制地址值是否相等。
"equals" 是比较对象在堆区中地址值(hash码)是否相同。
作者: 吕振    时间: 2013-3-8 18:16
"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
作者: 快乐之恋    时间: 2013-3-8 18:17
C#中的==以及equals和Java中的正好相反
== 是判断值是否相同
equals 是判断地址是否相同
而string类型对象的==和equals 都是比较值,这是比较特殊的
作者: 董华阳    时间: 2013-3-8 19:31
操作符“==”在值类型情况下表示是否值相等.equals 判断是否是同一个对象的引用.
string的==和equals都是比较值。
作者: 余攀    时间: 2013-3-8 21:21
楼上说得挺全的,俺补充下下: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.             }
复制代码

作者: 程天贤    时间: 2013-3-11 13:23
equals是比较地址,,“==”是比较值
作者: 岳珅    时间: 2013-3-11 21:13
这个mark一下!谢谢你们,又多了解了些东东




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2