代码之家  ›  专栏  ›  技术社区  ›  danatel

以整数数组作为键的字典

  •  1
  • danatel  · 技术社区  · 14 年前

    Dictionary<int[],string>

    Dictionary<List<int>,string>.
    

    但是我很惊讶,平等方法和散列码方法没有为我定义。除了创建自己的结构之外,还有什么简单的方法来实现这样的结构吗 MyType: List<int> 以及定义所有必要的方法?

    3 回复  |  直到 14 年前
        1
  •  3
  •   Hans Passant    14 年前

    它不是预定义的,因为它是 昂贵的 . 如果您知道您的列表很短,那么只需实现明显的覆盖。如果没有,你就必须至少为GetHashCode想出一些启发式方法。比方说,GetHashCode中只有前两个元素与长度异或。

        2
  •  0
  •   Alan    14 年前

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

    如果您使用的是.NET3.5,那么可以为List编写一个扩展方法,实现对这两种方法的重写 GetHashCode() ,和 Equality()

        3
  •  0
  •   Doc Brown    14 年前

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

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

    并使用 Dictionary<string,string> 相反。