2015-11-19 95 views
-1

我正在創建一個遊戲,每個玩家控制一個國家的課程。國家有 a list of MilitaryUnitsMilitaryUnits在2維地圖上有位置。如果我想獲得位置(2,3)上的MilitaryUnit,然後看到他屬於哪個國家,我需要在他的所有者國家/地區的MilitaryUnit級別中有一個字段,但這樣兩個類將指向每個其他。有沒有更好的方法來做到這一點?快速和正確的訪問

+6

如果您要*顯示*(僅僅是一個簡單的例子)而不是*描述*它會更容易理解代碼。 –

+3

從軍事部隊知道自己在爭奪什麼國家是合乎邏輯的事實開始。 – SimpleVar

+1

如果兩個類彼此指向對方,那麼在C#中通常不會有問題,因爲垃圾回收會處理這個問題。但是在這個實現中,你將不得不遍歷所有現有的單元來找到你想要的。考慮通過某種地圖座標來維護一個索引。 – GSerg

回答

0

如果你想要一個雙向映射,你必須將這些信息存儲在某個地方。 (所以你需要兩個指針/引用/等) 我不知道你的軟件的確切架構和算法,但我認爲這些位信息的恰當位置恰好在相互引用的類中。 (特別是在面向對象的設計。)

如果此引用導致問題,您可以使用外部映射(中提到的類外),如

Dictionary<MilitaryUnit,Country> UnitToCountry; 
Dictionary<Country, Set<MilitaryUnit>> CountryToUnits; 

但是,這是不是更好,或效率最高,但在某些軟件體系結構中可能需要。因此,如果你使用C#,並且它不會給你造成架構問題,我認爲完全可以引用對方的兩個類。