![]() |
1
3
您必须定义自己的容器,可能会包装列表,以获得相等哈希等于(gethashcode和equals)的有用语义。如果你愿意的话,你甚至可以使包装符合IList。 为了避免可变问题和更改gethashcode/equals结果(这会使哈希字典中新对象的使用有问题!)您还应该提供某种保护(可能在创建类型时复制输入)和/或记录约束。 你可以使用 SequenceEqual 要实现equals相当琐碎,但您需要以相关的方式实现gethashcode——一个简单的方法是每个元素的gethashcode的移位xor。 或者,如果这只是在单个字典中使用,则可以提供自定义 IEqualityComparer 避免创建包装类型: Dictionary constructor overload . 这取决于你的最终目标是什么,而且很可能已经有了这样的包装容器:—) 注:在.net4中有一组 Tuple<...> classes 它重写gethashcode和equals。见 cadenza 作为早期.NET版本的第三方备选方案。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |