我需要一个Dictionary,其键是一个整数数组,例如Dictionary<int[],string>
或
Dictionary<List<int>,string>.
但我很惊讶Equality方法和哈希码方法没有为我定义。除了创建自己的MyType: List<int>
并定义所有必要的方法之外,有没有简单的方法来实现这样的结构?
答案 0 :(得分:2)
它未预定义,因为它昂贵。如果您知道您的列表很短,那么只需执行明显的覆盖。如果没有,你将不得不为至少GetHashCode提出某种启发式方法。比方说,只有前几个元素的GetHashCode与长度一起xor-ed。
答案 1 :(得分:1)
为List定义了GetHashCode和Equality,它们不会被覆盖,以便为您提供您可能期望的行为。
如果您使用的是.NET 3.5,则可以为List编写扩展方法,以实现对GetHashCode()
和Equality()
答案 2 :(得分:0)
您可以在某处提供两种方法,而不是创建自己的类型
string ConvertListToString(List<int> l){...};
List<int> ConvertStringToList(string s){...};
并改为使用Dictionary<string,string>
。