使用 IEquatable<T> 的同级类的 C# 字典唯一性

标签 c# dictionary unique identity iequatable

我想将两个类的实例存储在字典结构中,并使用 IEquatable 来确定这些实例的唯一性。这两个类共享一个(抽象)基类。考虑以下类:

abstract class Foo
{
   ...
}

class SubFoo1 : Foo
{
   ...
}

class SubFoo2 : Foo
{
   ...
}

字典将被标记为:Dictionary<Foo, Bar>

哪些类应声明为 IEquatable?这些声明的泛型类型 T 应该是什么?这可能吗?

最佳答案

不要将任何内容声明为 IEquatable<T> 。正如 Marc 所说,这通常是继承和平等方面的问题。

相反,计算出您想要这个特定字典中的键的相等性,并实现 IEqualityComparer<Foo> ,然后将其传递到字典构造函数中。

通常如何比较特定情况下的键是相当清楚的。

关于使用 IEquatable<T> 的同级类的 C# 字典唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2694394/

相关文章:

r - 在R中唯一化重复的列名

C# 值/引用传递?

c# - 如何将命令行从 WPF 应用程序传递到另一个应用程序?

python - 为 Python 函数的字典列表指定参数类型

尝试从字典插入数据时,Python 的值太多而无法解压

python - 如何检查特定 Pandas 数据框列中的值是否唯一

c# - ManualResetEvent WaitOne 未解锁

c# - 找不到类型或命名空间名称 'Column'

python - 仅当它们具有匹配值时,如何添加作为列表的键值?

c++ - 是否有具有用户定义的碰撞处理程序的 std::unique 风格的库算法?