C#字典平等要求

ala*_*ere 5 c# collections dictionary equality set

是否Dictionary需要与平等相媲美的关键?

例如

Class mytype
{
    public bool equals(mytype other)
    {
        return ...;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,除非它们是同一个实例,否则它们将不相等.

如果我需要实现相等,我应该有一个大的数值,随着每个新mytype创建的实例递增?

par*_*mar 3

如果您的类仅equal是同一实例,那么您无需执行任何操作即可在Dictionary. 当且仅当引用同一个对象时,类(引用类型)才被认为是相等的。

来自 GetHashCode 的文档

对于 Object 的派生类,当且仅当该派生类将值相等性定义为引用相等性且类型不是值类型时,GetHashCode 方法才可以委托给 Object.GetHashCode 实现。

对于你的情况来说这似乎是正确的。根据经验,如果您覆盖Equal,您还需要覆盖GetHashCode,但这在您的情况下不是必需的,因为默认值就是您正在寻找的。