Dictionary.Equals()有实现吗?

Mik*_*e Q 9 c# dictionary equals

我有一个字典,我将其与另一个字典进行比较(变量类型为IDictionary).执行d1.Equals(d2)会产生错误.在下面编写自己的代码会产生真实.两者都是System.Collections.Generic.Dictionary.我缺少的东西或根本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;
}
Run Code Online (Sandbox Code Playgroud)

Sof*_*mes 12

Dictionary.Equals()使用默认的Equals from Object,检查两个对象是否与所有其他默认集合的引用相同.您可以自由地创建具有值语义的子类,尽管这通常包括不可变的内容.

  • +1,正如它在Dictionary类文档中所说的那样.http://msdn.microsoft.com/en-us/library/3eayzh46.aspx. (2认同)

Kon*_*man 5

可能这个类的Equals方法Dictionary只是简单地转向继承自的默认实现Object,也就是说,它只是将Dictionary传递的对象引用与它自己的引用进行比较.请参见此处:Object.Equals参考