簡體   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