我正在寻找嵌套字典在另一个,以容纳x,y坐标的区块。所以我会
IDictionary<IDictionary<int, int>, IDictionary<int, int>>键字典将容纳列,行组合,而值字典将容纳x和y坐标。它将用于在用户输入平面上的块值后绘制2D线框。
我有几个问题:( 1)我可能会遇到哪些陷阱?( 2)是否有更好的方法来应对这个挑战?
谢谢
更新不确定如何标记答案,因为两个不同的建议导致使用的解决方案。最后我得到了:
IDictionary<KeyValuePair<int, int>, Point>每个块设置下一个块的x,y坐标,在它的右边和下一个块。
这是由梅尔达-阿法利,里德·科普西和CSharpAtl为KeyValuePair和科里·查尔顿为“点”的答案的组合。
如果有一种方法来标记多个答案,请告诉我,但否则,我只是在列表中的第一个答案作为答案。
发布于 2009-12-14 17:54:23
你想把一对整数映射到字典吗?如果是这样的话,您可能应该使用如下内容:
Dictionary<Tuple<int, int>, Dictionary<int,int>>您当前所做的工作将IDictionary对象(它是引用类型)映射到另一个IDictionary实例。它只检查键的引用相等(标识),根本不考虑密钥字典的内容。
如果您试图将由一组值组成的键映射到字典(例如,在回忆录和动态编程中很有用),您需要声明自己的比较器来比较键的内容,而不是仅仅考虑它们的引用。
发布于 2009-12-14 17:55:07
为什么不创建一个简单的块类:
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。这将使您的数据具有强类型且更易于维护。
发布于 2009-12-14 17:55:14
这似乎更有意义,因为:
Dictionary<KeyValuePair<int,int>, KeyValuePair<int,int>>主要问题是,XY坐标对(基本上是键和值)实际上不应该是字典--只有一个唯一的对值。
应该会很好的。
https://stackoverflow.com/questions/1902391
复制相似问题