==,equal,RefenceEqual区别

对于值类型,==和Equal操作的作用是一样的,就是比较值类型的值是否相等。如果使用object.ReferenceEquals来比较值类型,输出永远都是FALSE,因为他们BOX之后在堆上的引用都不是同一个值。

 

对于引用类型来说,==,Equal,ReferenceEqual都是对引用对象是否相等的比较,而不是他们的值,除非重写函数进行值比较。

 

对于字符串这种特殊的值类型来说,==和Equal操作的作用是一样的,就是比较值类型的值是否相等。如果使用object.ReferenceEquals来比较值类型,就要看字符串是否是新实化的,否则字符串池的机制会使得对象的引用相等。

 

            string x =new String(new char[]{'a'});
            string y = "a";
            string z = "a";
            Console.WriteLine(x.Equals(y));//ture
            Console.WriteLine(object.ReferenceEquals(x,y));//false
            Console.WriteLine(object.ReferenceEquals(z, y));//true


 

 

posted @ 2012-11-04 14:22  leestar54  阅读(228)  评论(0编辑  收藏  举报