進出口試圖更新地圖值:C#詞典更新插入在相同的索引
我Matrix類(與地圖)
class Matrix
{
// m = column
// n = row
int m, n;
Dictionary<Position, double> values;
public Matrix(int M, int N)
{
this.m = M;
this.n = N;
values = new Dictionary<Position, double>();
// Zorgen dat de matrix vol zit met waardes door alles op 0 te zetten
for(int i = 0; i < m; i ++)
{
for (int j = 0; j < n; j++)
{
values.Add(new Position(i,j), 0);
}
}
}
public void setValue(int x, int y, int value)
{
values[new Position(x, y)] = value;
//
}
}
我的位置類
class Position
{
int x, y;
public Position(int x, int y)
{
this.x = x;
this.y = y;
}
}
我的程序,其中在調試時我可以看到兩次相同的位置。
static void Main(string[] args)
{
Matrix m1 = new Matrix(2,3);
m1.setValue(1, 1, 1);
m1.setValue(3, 4, 1);
Console.ReadLine();
}
位置是隻有一個x和y值的類。我想要做的是將具有特定x,y值的位置值更新爲給定值。
但是,如果我使用相同的x,y值運行函數兩次,那麼有兩個鍵的位置與x,y值相似。
我應該如何更新位置而不是插入新位置。
是否定位了一個結構,並且重寫了Equals和GetHashCode語義?這可能是問題 – Casey
如果Position只是一個對象,它將以引用相等方式進行操作,並且它不會像您期望的那樣工作,除非您擁有與密鑰完全相同的對象 – Casey
使位置成爲結構而不是類。 – Camo