整数数组作为键的字典

我需要一个Dictionary,其键是一个整数数组,例如Dictionary

 Dictionary<List,string>. 

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

它不是预定义的,因为它很昂贵 。 如果您知道您的列表很短,那么只需执行明显的覆盖。 如果没有,你将不得不为至少GetHashCode提出某种启发式方法。 比方说,只有前几个元素的GetHashCode与长度一起xor-ed。

GetHashCode和Equality是为List定义的,它们不会被覆盖,以便为您提供您可能期望的行为。

如果您使用的是.NET 3.5,则可以为List编写扩展方法,以实现对GetHashCode()Equality()的覆盖。

您可以在某处提供两种方法,而不是创建自己的类型

 string ConvertListToString(List l){...}; List ConvertStringToList(string s){...}; 

并使用Dictionary代替。