我有类型的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();
}
}