イムマップ値更新しよう: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;
}
}
マイプログラム私はデバッグ中に同じ位置を2回見ることができます。
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値で2回関数を実行すると、位置がsimilair x、y値の2つのキーがあります。
新しい位置を挿入する代わりに位置を更新する必要があります。
位置は構造体で、EqualsとGetHashCodeのセマンティクスをオーバーライドしましたか?それはおそらく問題です – Casey
Positionが単にオブジェクトであれば、それは参照平等で動作し、キーとして使用するのと全く同じオブジェクトを持たない限り期待通りに動作しません。 – Casey
位置をクラスではなく構造にします。 – Camo