var obj1 = new { Age = 12, Name = "Jack" }; var obj2 = new { Age = 12, Name = "Jack" }; Console.WriteLine("obj1 == obj2: 【{0}】", obj1 == obj2); Console.WriteLine("obj1.GetHashCode() == obj2.GetHashCode(): 【{0}】", obj1.GetHashCode() == obj2.GetHashCode()); Console.ReadLine();
输出结果如下:
对于引用类型,==比较的不仅仅是HashCode相同,还需要是相同的引用,你用.Equals的话就是相同的,通常情况下,应当自己重载GetHassCode方法,您可以参阅《CLR via C#》 5.4节
你这里GetHashCode是Object的方法,针对不同类型,应该重写GetHashCode,这样GetHashCode才有意义
==相同的话则GetHashCode返回的肯定相同,反之则不一定的。
你需要dynamic对象相等的逻辑的话,要自己写的。