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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李波 黑马帝   /  2011-12-3 20:46  /  4690 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

C#中equals和 ==的区别是什么?最好详细点啊.

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

7 个回复

倒序浏览
“==”是一个整型运算符
equals是一个字符串处理函数
两者比较返回的结果都是布尔类型,区别在于,使用equals字符串处理函数的时候,在操作上可以进行一些限制

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

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

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

回复 使用道具 举报
equals是用于字符串的,==可用于多种值类型,字符串的相等推荐使用equals

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
首先你得弄懂,什么是值类型,和引用类型,相等运算符(==)返回值是 bool,它比较的的是对象的值是不是相等,  则equals()方法:如果两个对象是不是引用用一个对象!比如:系统中开辟出一块空间,用于比较的值的指针是不是都指向那块开辟出来的内存。

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

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

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

回复 使用道具 举报
在C#中
==是用来判断变量的值是否相等   相等返回true   不相等返回false。

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

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

回复 使用道具 举报
对于值类型来说,Equals和==都是比较值是否相等;对于string来说,Equals和==都是比较string对象的内容是否相同,即两个字符串对应的每个字符都相同,当然Equals还有参数可以设置是否忽略大小写。 ReferenceEquals比较引用是否相等。
回复 使用道具 举报
李波 黑马帝 2012-9-8 14:55:35
8#
本帖最后由 李波 于 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()方法才可...而==可以比较两个基本类型,也可以是对象...
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马