我有我的班级
MyClass<MyTriple<FirstG, SecondG, ThirdG>> : ICollection<MyTriple<FirstG, SecondG, ThirdG>>
我的数据存储在:
Dictionary<FirstG, Dictionary<SecondG, ThirdG>> Data
我希望为我的数据实施IEqualityComparer
。 MyClass
的构造函数必须作为MyTriple
的参数比较器:
public MyClass(IEqualityComparer<MyTriple<FirstG, SecondG, ThirdG>> comparer) {...}
我希望(不知何故)将此比较器传递给Data
并在构造函数中创建它,如:
Data = new Dictionary<FirstG, new Dictionary<SecondG, ThirdG>(SecondAndThirdGComparer)>(FirstGComparer);
我真的没希望,我尝试创建实现IEqualityComparer
的比较器,但我无法弄清楚,如何获得FirstGComparer<FirstG>
比较器。感谢您的任何建议。
答案 0 :(得分:3)
好的,所以用户输入了comparer
参数(到构造函数)类型:
IEqualityComparer<MyTriple<FirstG, SecondG, ThirdG>>
现在,这可能是“3D”中任何疯狂的比较者。没有人可以保证这个comparer
以坐标或词典方式工作。因此,绝对 no 方式可以“排除”仅FirstG
的比较器。
假设您有两个实例firstG_X
和firstG_Y
。然后从comparer
你无法判断这两者是否相等。您可以要求comparer
仅比较两个三元组。如果你将firstG_X
“扩展”到某个三元组,将firstG_Y
扩展到其他三元组,则必须做出任意选择,而来自可疑comparer
的答案很可能取决于选择。
希望我说的是有道理的。