我希望沿着Python元组(或者,对于sets,frozensets)来说,它们是可散列的。我有一个List<String>
这绝对不是哈希正确(即按值)。如何将C#列表转换为可哈希?
2
A
回答
3
您将不得不定义自己的容器,可能会包装List,以获取equals-hash-equals(GetHashCode和Equals)的有用语义。如果你喜欢,你甚至可以使包装符合IList。
为了避免可变性问题和改变的GetHashCode/Equals结果(这会在散列字典中使用你的新对象存在问题!),你还应该提供一些防范措施(可能会创建一个输入副本你的类型)和/或记录约束条件。
您可以使用SequenceEqual来实现Equals,但您需要以相关的方式实现GetHashCode - 一种简单的方法是每个元素的GetHashCode的异或XOR。
或者,如果这只用于单个字典中,您可以提供自定义IEqualityComparer并避免创建包装类型:Dictionary constructor overload。
这取决于你的最终目标是有很好的已经是这样的包装容器:-)
注意:在.NET4有一组Tuple<...> classes其重写GetHashCode和equals。请参阅cadenza作为以前.NET版本的第三方替代品。
相关问题
- 1. C#哈希集转换为列表
- 2. 如何将redis哈希转换为JSON?
- 3. 如何将Textview数组列表转换为哈希集?
- 4. 是否可以将NetMTLMv2哈希转换为NTLM哈希?
- 5. 带格式列表的哈希表转换回哈希表powershell
- 6. 如何将Python字典转换为JavaScript哈希表?
- 7. 如何将哈希表的Arraylist转换为其他意图?
- 8. 如何将哈希值转换为lambda表达式?
- 9. 在Android浏览器上将哈希(#)哈希(#)转换为%23
- 10. 将redis哈希转换为python字典?
- 11. 将哈希转换为csv文件
- 12. 将Sha256哈希值转换为NSString
- 13. 如何将字符串等哈希转换为红宝石哈希?
- 14. 如何转换哈希表列表中的ResultSet?
- 15. 将Perl哈希变换为c#keyvaluepair
- 16. RecycerView中的哈希表无法转换为列表
- 17. 转换http_params哈希
- 18. 将哈希数组转换为散列哈希,通过哈希的属性进行索引
- 19. 将Python中的SHA哈希计算转换为C#
- 20. 如何将一串键和值转换为Ruby哈希?
- 21. 如何在Rails中将哈希数组转换为XML?
- 22. 我该如何将这个Ruby哈希转换为数组?
- 23. 如何将LinkedIn客户端的rails转换为哈希
- 24. 如何将Python中的哈希函数转换为R
- 25. 如何将对象数组转换为哈希数组?
- 26. 如何将Rails 2哈希合并转换为Rails 3?
- 27. 如何将红宝石哈希对象转换为JSON?
- 28. 如何将数组转换为红宝石键值对哈希
- 29. 如何将短语和单词转换为MD5哈希?
- 30. 如何将字符串转换为哈希WITHOUT EVAL
非常好,非常感谢! – gatoatigrado 2010-06-17 20:21:29