整数数组作为键的字典

时间:2010-08-01 19:59:29

标签: c# collections dictionary

我需要一个Dictionary,其键是一个整数数组,例如Dictionary<int[],string>

Dictionary<List<int>,string>.

但我很惊讶Equality方法和哈希码方法没有为我定义。除了创建自己的MyType: List<int>并定义所有必要的方法之外,有没有简单的方法来实现这样的结构?

3 个答案:

答案 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>