c# – Dictionary – 比较数组中的值,而不是引用?

前端之家收集整理的这篇文章主要介绍了c# – Dictionary – 比较数组中的值,而不是引用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用字典存储ID,otherID和bool值.不幸的是它比较了数组引用,因此我无法使用它.
有没有办法如何将数组作为键,但比较其值而不是引用?
谢谢

解决方法

您可以使用字典的 Comparer property将其设置为您创建的自定义比较器.

编辑:实际上该属性是只读的,抱歉.你应该使用正确的构造函数

class IntArrayComparer : IEqualityComparer<int[]> {
    public bool Equals(int[] x,int[] y) {
        if (x.Length != y.Length) {
            return false;
        }
        for (int i = 0; i < x.Length; ++i) {
            if (x[i] != y[i]) {
                return false;
            }
        }
        return true;
    }
    public int GetHashCode(int[] obj) {
        int ret = 0;
        for (int i = 0; i < obj.Length; ++i) {
            ret ^= obj[i].GetHashCode();
        }
        return ret;
    }
}
static void Main(string[] args) {
    Dictionary<int[],bool> dict = new Dictionary<int[],bool>(new IntArrayComparer());
}

猜你在找的C#相关文章