C#中 ==、 Equals、ReferenceEquals之间的区别

对于不同的数据类型,这三者有不同的结果。

1、值类型

  1.  == :如果类型不同,先转换为统一类型,在进行值的比较。
  2. Equals:如果类型不同,直接返回false;否则继续比较值是否相等。
  3. ReferenceEquals:返回false
1 int a = 15;
2 float b = 15;
3 Console.WriteLine(a == b);                          //true;
4 Console.WriteLine(a.Equals(b));                     //false
5 Console.WriteLine(object.ReferenceEquals(a, b));    //false

2、string

  1.  == :进行值的比较。
  2. Equals:进行值的比较
  3. ReferenceEquals:进行引用的比较
1 string strA = new string('a', 'b');
2 string strB = new string('a', 'b');
3 Console.WriteLine(strA == strB);                        //true
4 Console.WriteLine(strA.Equals(strB));                   //true
5 Console.WriteLine(object.ReferenceEquals(strA, strB));  //false

3、引用类型:

  均是进行引用的比较

原文地址:https://www.cnblogs.com/luguoshuai/p/10008036.html