繁体   English   中英

列表或字典还是其他?

[英]List or Dictionary or something else?


我想在字典中保存一些坐标,但是xPos在字典中应该是两倍或更多。

问题是出现以下异常:
ArgumentException: An element with the same key already exists in the dictionary.

我该如何解决这个问题?

我已经以为可以使用列表或数组,但我想要一个键和一个值。

将坐标保存在Dict(或其他)中后,我想检查新坐标是否与现有坐标相距一定距离。

xPos始终相同:
有一个“图表”,我在其中以不同的yPos放置了一些块。
1.区块:xPos = 0,yPos =随机
2. Block:xPos = 1,yPos =随机
...
区块:xPos = 80,yPos =随机
n + 1。 阻止:xPos = 0,yPos = 20 +随机

我有三个迭代,每放置80个块。

在此处输入图片说明

对不起,我的英语不好:|
我希望你能理解。

您可以创建一个类(或结构)来保留和使用您的坐标,而不是字典。 该类可以具有键和值属性,如果需要,还可以具有其他字段。

您应该保存诸如List之类的值,其中Position包含:

public int X { get; set; }
public int Y { get; set; }

或者,您可以使用C#中的其他类/结构或某些3rd库(2d矢量,点等),具体取决于您希望在何处使用它。 :)

或者你可以使用ListTuple存储的名单int - int对不创建新类,而不必担心重复的值:

.....
List<Tuple<int, int>> blocks = new List<Tuple<int, int>>();
blocks.Add(Tuple.Create(0, random));
blocks.Add(Tuple.Create(1, random));
.....

由于您要将点存储在二维曲面中,并且想要进行最近点检测,因此建议您使用Binary Space Partitioning(BSP)树 ,例如QuadTree。 这是C#中四叉树实现的链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM