键为int数组时访问字典值

时间:2018-10-28 14:14:04

标签: c#

我有类型的Dictionary来表示矩阵的索引,并确定是否已对该索引中的矩阵进行了操作。 我正在像这样初始化字典的所有值:

for (int i = 0; i < _size; i++)
                {
                    for (int j = 0; j < _size; j++)
                    {
                        indexes.Add(new int[] { i, j }, false);
                    }
                }

在调试时,我确实看到字典已正确初始化。

当然矩阵的长度为[_size,_size]

比我尝试访问这样的密钥(在另一个循环中):

bool b = indexes[new int[] { i,j }];

但是我找不到密钥。

一旦不能获得密钥值,也需要更改密钥的值。我猜那里有同样的问题。

编辑:

我已经按照重复的问题实施了代码,并且可以正常工作。 现在,当键是int类型的列表时,我试图做同样的事情,但出现异常:The method or operation is not implemented。 在将密钥添加到字典之前,甚至在尝试访问密钥之前,都会发生该异常。

我的更新代码:

private Dictionary<List<int>, Parameters> links = new Dictionary<List<int>, Parameters>(new EqualityComparer());

 private class EqualityComparer : IEqualityComparer<List<int>>
        {
            public bool Equals(List<int> x, List<int> y)
            {
                if (x.Count != y.Count)
                {
                    return false;
                }
                for (int i = 0; i < x.Count; i++)
                {
                    if (x[i] != y[i])
                    {
                        return false;
                    }
                }
                return true;
            }

            public int GetHashCode(int[] obj)
            {
                int result = 17;
                for (int i = 0; i < obj.Length; i++)
                {
                    unchecked
                    {
                        result = result * 23 + obj[i];
                    }
                }
                return result;
            }


            public int GetHashCode(List<int> obj)
            {
                throw new NotImplementedException();
            }
        }

0 个答案:

没有答案