Ent*_*ity 1 c# multidimensional-array coordinate
我有一个班级Room和一个班级World.目前,我有一个
Dictionary<Point, Room> world;
Run Code Online (Sandbox Code Playgroud)
我存储Room的是这样的:
world.Add(new Point(0,0), new Room());
Run Code Online (Sandbox Code Playgroud)
但是当我尝试访问它时,它返回null:
world.Get(new Point(0,0));
Run Code Online (Sandbox Code Playgroud)
我理解为什么会这样.但我的问题是:有人知道更好的方法吗?
这应该可以正常工作,您的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();
}
}
Run Code Online (Sandbox Code Playgroud)
这是使用System.Drawing.Point,它GetHashCode正确实现.(按预期打印"2".)
我怀疑问题是你的实施Point.确保它实现Equals和GetHashCode正确,或(更好的)使用一个版本点的框架结构.