c#中 == 与 Equals的区别
上一篇 /
下一篇 2009-02-25 14:39:56 / 天气: 阴雨
/ 心情: 高兴
using System;
class MainClass
{
static void Main()
{
int a = 1;
int b = 1;
Console.WriteLine(a == b); //1:true
object x = object(a);
object y = object(b);
Console.WriteLine(x);
Console.WriteLine(y);
Console.WriteLine(x == y); //2:false
Console.WriteLine(Equals(x,y)); //3:true
}
}
一开始一直执着于,x,y装箱完后都是等于1,为什么(==)运算返回false,总是以为可能是装箱中产生的问题,其实不然,只是(==)运算符的问题,装箱后x,y变成引用两个不同对象a,b了,而(==)运算符比较的是两者是否引用同一个对象,所以当然是false. equals则是支持引用相等性(对于引用类型)和按位相等性(对于值类型)。因为他们的值都是1,所以equals比较后是true。一下是从VS中摘抄下来的。
对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回false。对于string以外的引用类型,如果两个操作数引用同一个对象,则==返回true。对于string类型,==比较字符串的值
Equals的默认实现支持引用相等性(对于引用类型)和按位相等性(对于值类型)。引用相等性是指进行比较的多个对象引用所引用的是同一个对象。按位相等性是指进行比较的多个对象具有相同的二进制表示形式。
收藏
举报
TAG: