==,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


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章