黑马程序员技术交流社区

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

作者: 徐传任    时间: 2012-9-16 16:57
标题: C#中equals和 ==的区别是什么
C#中equals和 ==的区别是什么?最好详细点啊.谢谢

作者: 郭佳佳    时间: 2012-9-16 17:04
"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同;"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。概括的来说:equals是用于字符串的,==可用于多种值类型,字符串的相等推荐使用equals。随着练习的增多肯定能理解的。
作者: 张青江    时间: 2012-9-16 17:40
我觉得你首先要弄懂的一个问题:什么是值类型,和引用类型。运算符(==)返回值是 bool,它比较的的是对象的值是不是相等,  则equals()是一个方法,如果两个对象是不是引用用一个对象!比如:系统中开辟出一块空间,用于比较的值的指针是不是都指向那块开辟出来的内存。
作者: 徐传任    时间: 2012-9-16 18:01
郭佳佳 发表于 2012-9-16 17:04
"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即 ...

谢谢............
作者: 徐传任    时间: 2012-9-16 18:01
张青江 发表于 2012-9-16 17:40
我觉得你首先要弄懂的一个问题:什么是值类型,和引用类型。运算符(==)返回值是 bool,它比较的的是对象 ...

谢谢............
作者: yueguhua    时间: 2012-9-16 18:42
equales相当关于==常用对象比较
java 中是用字符串做比较 而.net中是用作 对象比较 比如
string name="不知道";
string name1="还是不知道";
if (name.Equals(name1)==false)
{
}

作者: 郎乐乐    时间: 2012-9-16 21:46
举个例子:
StringBuilder s1 = new StringBuilder("abc");
StringBuilder s2 = new StringBuilder("abc");
用s1==s2 返回值为false
用s1.Equals(s2)返回值为true
这是因为s1与s2是两个对象,而“==”比较的是一个对象在内存中的地址,即s1与s2是不是同一个对象。创建s1,s2两个对象,他们在内存中地址的位置是不一样的;
"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。它比较的是“abc”以"abc"是不是一样

作者: 王荟越    时间: 2012-9-17 08:35
==操作比较的是两个变量的值是否相等,
equals操作表示的两个变量是否是对同一个对象的引用.




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