gpt4 book ai didi

C# 坐标键字典

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:58 25 4
gpt4 key购买 nike

我有一个类 Room 和一个类 World。目前,我有一个

    Dictionary<Point, Room> world;

我像这样存储 Room:

    world.Add(new Point(0,0), new Room());

但是当我尝试访问它时,它返回 null:

    world.Get(new Point(0,0));

我明白发生这种情况的原因。但我的问题是:有人知道这样做的更好方法吗?

最佳答案

如果您的 Point 实现正确实现了 GetHashCodeEquals,那应该可以正常工作。

例如,以下完美运行:

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();
}
}

这是使用 System.Drawing.Point,它正确地实现了 GetHashCode。 (它按预期打印“2”。)

我怀疑问题出在您对 Point 的实现上。确保它正确地实现了 EqualsGetHashCode,或者(更好的是)使用框架中包含的 Point 版本。

关于C# 坐标键字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4697405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com