我想将两个类的实例存储在字典结构中,并使用 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/