2013-02-28 41 views
2

我有一個抽象類和五個從它繼承的其他類。
我想在這個抽象類中保存一個Dictionary的實例 - 並讓所有其他類能夠添加/刪除此Dictionary中的值。如何在所有派生類共享的根類中創建一些字典?

我寧願不把這個詞典定義爲'靜態'。

我該怎麼辦?

+1

爲了清楚起見,您希望這個字典能夠從您的抽象類繼承的所有類的實例中共享,或者您只需要一個對子類可見的字典? – vcsjones 2013-02-28 14:49:58

+0

'static'有什麼問題? – pescolino 2013-02-28 14:54:15

回答

1

這樣做的一個更好的方法可能是擁有一個單獨的Singleton類來保存你的字典,並使該單例類成爲你的基類的一個屬性。這樣可以避免使用靜態,同時確保封裝字典的單例類的一個實例。使其成爲抽象類的受保護成員,可以將所有子類訪問到包含字典的類的單個實例。

4

把它定義爲

保護字典d ...

這將是可見的所有子類。

static關鍵字是錯誤的選擇,因爲它定義了一個共享給該類的所有實例的字典。這是完全不同的東西

+0

但是這將不會有共享內存 - 所有繼承的一個實例 – Yanshof 2013-02-28 14:51:50

+1

所以你想要靜態(在VB中共享)的行爲,但不想聲明它是靜態的?爲什麼? – Corak 2013-02-28 14:54:06

+0

如果你想要它靜態定義它爲靜態....或作爲受保護的靜態並創建一個引用它的受保護的屬性(如果這是有道理的!) – 2013-02-28 14:56:49

相關問題