首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用Dictionary<Dictionary<int,int>,Dictionary<int,int>>建议

尝试使用Dictionary<Dictionary<int,int>,Dictionary<int,int>>建议
EN

Stack Overflow用户
提问于 2009-12-14 17:48:59
回答 7查看 1.4K关注 0票数 1

我正在寻找嵌套字典在另一个,以容纳x,y坐标的区块。所以我会

代码语言:javascript
复制
IDictionary<IDictionary<int, int>, IDictionary<int, int>>

键字典将容纳列,行组合,而值字典将容纳x和y坐标。它将用于在用户输入平面上的块值后绘制2D线框。

我有几个问题:( 1)我可能会遇到哪些陷阱?( 2)是否有更好的方法来应对这个挑战?

谢谢

更新不确定如何标记答案,因为两个不同的建议导致使用的解决方案。最后我得到了:

代码语言:javascript
复制
IDictionary<KeyValuePair<int, int>, Point>

每个块设置下一个块的x,y坐标,在它的右边和下一个块。

这是由梅尔达-阿法利,里德·科普西和CSharpAtl为KeyValuePair和科里·查尔顿为“点”的答案的组合。

如果有一种方法来标记多个答案,请告诉我,但否则,我只是在列表中的第一个答案作为答案。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-12-14 17:54:23

你想把一对整数映射到字典吗?如果是这样的话,您可能应该使用如下内容:

代码语言:javascript
复制
Dictionary<Tuple<int, int>, Dictionary<int,int>>

您当前所做的工作将IDictionary对象(它是引用类型)映射到另一个IDictionary实例。它只检查键的引用相等(标识),根本不考虑密钥字典的内容。

如果您试图将由一组值组成的键映射到字典(例如,在回忆录和动态编程中很有用),您需要声明自己的比较器来比较键的内容,而不是仅仅考虑它们的引用。

票数 5
EN

Stack Overflow用户

发布于 2009-12-14 17:55:07

为什么不创建一个简单的块类:

代码语言:javascript
复制
struct Block
{
    public int X {get; set;}
    public int Y {get; set;}
    public int Column {get; set;}
    public int Row {get; set;}
}

和一个简单的IEnumerable<Block> blocks。这将使您的数据具有强类型且更易于维护。

票数 4
EN

Stack Overflow用户

发布于 2009-12-14 17:55:14

这似乎更有意义,因为:

代码语言:javascript
复制
Dictionary<KeyValuePair<int,int>, KeyValuePair<int,int>>

主要问题是,XY坐标对(基本上是键和值)实际上不应该是字典--只有一个唯一的对值。

应该会很好的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1902391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档