黑马程序员技术交流社区

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

作者: 李波    时间: 2011-12-3 20:46
标题: C#中equals和 ==的区别
C#中equals和 ==的区别是什么?最好详细点啊.
作者: 林洲    时间: 2011-12-3 21:21
“==”是一个整型运算符
equals是一个字符串处理函数
两者比较返回的结果都是布尔类型,区别在于,使用equals字符串处理函数的时候,在操作上可以进行一些限制

bool b = ("abc"=="ABC");//用"=="来进行字符串相等比较时,此时表达式返回的是false;

bool b = "abc".Equals("ABC",StringComparison.OrdinalIgnoreCase);//此时表达式返回true;Ignore:忽略,Case:大小写,Comparison:比较。

作者: 深海中的鱼    时间: 2011-12-3 21:51
equals是用于字符串的,==可用于多种值类型,字符串的相等推荐使用equals
作者: 李豫    时间: 2011-12-3 22:58
首先你得弄懂,什么是值类型,和引用类型,相等运算符(==)返回值是 bool,它比较的的是对象的值是不是相等,  则equals()方法:如果两个对象是不是引用用一个对象!比如:系统中开辟出一块空间,用于比较的值的指针是不是都指向那块开辟出来的内存。
作者: 闫炳颖    时间: 2011-12-4 19:38
1)"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
2)"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

作者: 田忠    时间: 2011-12-5 21:45
在C#中
==是用来判断变量的值是否相等   相等返回true   不相等返回false。

Equals是用来判断两个对象(除string类型外)是否相等,相等的条件是:值,地址,引用全相等),因为String类重写了Equals方法,所以当string类型的对象用Equals方法比较时只比较两个对象有值   相等返回true   不相等返回false。

作者: 黑马李果    时间: 2012-7-3 19:29
对于值类型来说,Equals和==都是比较值是否相等;对于string来说,Equals和==都是比较string对象的内容是否相同,即两个字符串对应的每个字符都相同,当然Equals还有参数可以设置是否忽略大小写。 ReferenceEquals比较引用是否相等。

作者: 李波    时间: 2012-9-8 14:55
本帖最后由 李波 于 2012-9-8 14:56 编辑

  1. string1="aaa";
  2. string2="aaa";

  3. String string3=new String("aaa");
  4. String string4=new String("aaa");

  5. string1==string2 // true;  
  6. string1.equals(string2);//true;

  7. string3==string4;//false   因为用new创建了2个对象,所以是两个不同的内存地址
  8. string3.equals(string4);//true 而String类的是不可改变的,所以会指向同一个内存地址,所以返回为true

  9. equals()是object的方法,所以只是适合对象,不适合于基本类型,equals()默认是用"=="比较两个对象的内存地址,如果想要比较两个对象的内容,要重写equals()方法才可...而==可以比较两个基本类型,也可以是对象...
复制代码





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