頭を壁にぶつける準備ができている
tiles という辞書を持つ Map というクラスがあります。
class Map
{
public Dictionary<Location, Tile> tiles = new Dictionary<Location, Tile>();
public Size mapSize;
public Map(Size size)
{
this.mapSize = size;
}
//etc...
いくつかのことをテストするために、一時的にこの辞書に入力します..
public void FillTemp(Dictionary<int, Item> itemInfo)
{
Random r = new Random();
for(int i =0; i < mapSize.Width; i++)
{
for(int j=0; j<mapSize.Height; j++)
{
Location temp = new Location(i, j, 0);
int rint = r.Next(0, (itemInfo.Count - 1));
Tile t = new Tile(new Item(rint, rint));
tiles[temp] = t;
}
}
}
そして私のメインプログラムコードで
Map m = new Map(10, 10);
m.FillTemp(iInfo);
Tile t = m.GetTile(new Location(2, 2, 0)); //The problem line
ここで、コードにブレークポイントを追加すると、マップ クラスのインスタンス (m) が上記の関数を介してペアで満たされていることがはっきりとわかりますが、GetTile 関数を使用して値にアクセスしようとすると、次のようになります。
public Tile GetTile(Location location)
{
if(this.tiles.ContainsKey(location))
{
return this.tiles[location];
}
else
{
return null;
}
}
常に null を返します。繰り返しますが、Map オブジェクト内を表示し、 x=2,y=2,z=0 の Location キーを見つけると、値が FillTemp によって生成された Tile であることがはっきりとわかります。
なぜこれを行うのですか?これまでのところ、このような辞書で問題はありませんでした。null を返す理由がわかりません。繰り返しになりますが、デバッグ時に、 Map インスタンスに Location キーが含まれていることがはっきりとわかります...非常にイライラします。
手がかりはありますか?さらに情報が必要ですか?
助けていただければ幸いです:)