整数数组作为键的字典
我需要一个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
代替。