【Code】spa
class Program { static void Main(string[] args) { object A = new Person { Name = "jack" }; object B = new Person { Name = "jack" }; int i1 = 1; int i2 = 1; /* * ReferenceEquals比較的是引用類型 */ // 兩個參數會自動裝箱,--引用不一樣,false Console.WriteLine(ReferenceEquals(i1, i2)); // 引用不一樣,false Console.WriteLine(ReferenceEquals(A, B)); /* * 若是Person類不重寫Equals方法,Equals方法效果與==同樣 */ // 引用類型,引用不一樣,false Console.WriteLine(A.Equals(B)); // 值類型,值相同,true Console.WriteLine(i1.Equals(i2)); // 引用不一樣,false Console.WriteLine(A == B); // 值類型,值相同,true Console.WriteLine(i1 == i2); Console.Read(); } } class Person { internal string Name; }
【ReferenceEquals】code
1.ReferenceEquals用於比較引用類型。blog
2.若是比較的是值類型(會自動裝箱),則返回false。string
【Equals】it
1.Equals用於比較值類型和引用類型。class
2.能夠被子類重寫。object
3.若是不重寫Equals方法,Equals方法效果與==同樣,引用類型比較引用,值類型比較值。引用
4.若是重寫Equals方法,須要重寫GetHashcode方法,當該類做爲鍵值對的鍵時,須要惟一的Hashcode,因此此時的GetHashcode方法須要被重寫。方法
【==】static
1.Equals用於比較值類型和引用類型。
2.引用類型比較引用,值類型比較值。