我想在字典中保存一些坐标,但是字典中的xPos应该是两倍或更多
问题是出现以下异常:
ArgumentException: An element with the same key already exists in the dictionary.
我该如何解决这个问题呢?
我已经认为我可以使用List或数组,但我想要一个Key和一个值。
在Dict(或其他)中保存坐标后,我想检查新坐标是否与现有坐标相距一定距离。
xPos总是一样的:
有一个"图表"我将一些块放在一个具有不同yPos的行中
1.阻止:xPos = 0,yPos =随机
2.阻止:xPos = 1,yPos =随机
...
ñ。阻止:xPos = 80,yPos =随机
的n + 1。阻止:xPos = 0,yPos = 20 +随机
我有三次迭代,每放置80个块。
抱歉我的英语不好:|
我希望你能理解。
答案 0 :(得分:1)
您可以创建一个类(或结构)来保留和使用您的坐标,而不是字典。 如果需要,该类可以具有键和值属性以及其他字段。
答案 1 :(得分:1)
您应该保存像List这样的值,其中Position包含:
public int X { get; set; }
public int Y { get; set; }
或者你可以使用C#中的另一个类/结构或某些第三个库(2d vector,point等)取决于你想要使用它的位置。 :)
答案 2 :(得分:1)
或者您可以使用List
Tuple
来存储int
- int
对的列表,而无需创建新类,也不必担心重复值:
.....
List<Tuple<int, int>> blocks = new List<Tuple<int, int>>();
blocks.Add(Tuple.Create(0, random));
blocks.Add(Tuple.Create(1, random));
.....
答案 3 :(得分:0)
由于您要在二维曲面中存储点并想要进行最近点检测,因此我建议使用Binary Space Partitioning (BSP) tree,例如QuadTree。这是C#中四元树实现的link。