実装が適切にPoint
実装されていれば、それはうまくいくはずです。GetHashCode
Equals
たとえば、次のコードは完全に機能します。
using System;
using System.Collections.Generic;
using System.Drawing;
class Room
{
public int X
{
get;
set;
}
}
struct Program
{
static void Main()
{
Dictionary<Point, Room> world = new Dictionary<Point, Room>();
world.Add(new Point(0, 0), new Room() { X = 0 });
world.Add(new Point(2, 3), new Room() { X = 2 });
Room room = world[new Point(2, 3)];
Console.WriteLine(room.X);
Console.ReadKey();
}
}
これはGetHashCode
適切に実装する System.Drawing.Point を使用しています。(予想通り、「2」と表示されます。)
問題は の実装にあると思われますPoint
。それが正しく実装されていることを確認するEquals
か、(できれば) フレームワークに含まれている Point のバージョンを使用してください。GetHashCode