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


 

 

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