我有一个字典,我正在与另一个字典(变量键入IDictionary)进行比较.做d1.Equals(d2)会产生错误.在下面写我自己的代码是真的.都是System.Collections.Generic.Dictionary.我是否缺少某些东西或字典没有比较键/值的Equals实现?
private static bool DictEquals<K,V>(IDictionary<K,V> d1,IDictionary<K,V> d2) { if (d1.Count != d2.Count) return false; foreach (KeyValuePair<K,V> pair in d1) { if (!d2.ContainsKey(pair.Key)) return false; if (!Equals(d2[pair.Key],pair.Value)) return false; } return true; }
解决方法
Dictionary.Equals()使用来自Object的默认Equals,检查两个对象是否是相同的引用,以及所有其他默认集合.你可以自由地创建自己的具有价值语义的子类,尽管它通常包括不可变的东西.