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:

 

评分:0

我来说两句

日历

« 2024-05-24  
   1234
567891011
12131415161718
19202122232425
262728293031 

我的存档

数据统计

  • 访问量: 1007
  • 日志数: 1
  • 建立时间: 2009-02-22
  • 更新时间: 2009-02-25

RSS订阅

Open Toolbar