2009-12-29 16 views
1

我製作了Graph類,我想模擬一個分佈式網絡。圖表工作100%。但是,我想在我的所有應用程序中使用相同的結構/類! 例如: 我有Form1顯示模擬,但我想插入節點(例如),但我想在Form2中做到這一點! 由於數據總是在同一個類中,因此我可以使我的Graph實例成爲全局的,但C#不採用全局變量。那麼,我將如何解決這個問題?有任何想法嗎?謝謝!Visual C#中的「全局變量」#

回答

4

給窗體在其構造函數中對圖的引用。

Graph g = new Graph(); 
Form1 f1 = new Form1(g); 
Form2 f2 = new Form2(g); 

然後這兩個表格都使用同一個圖表。

+0

OP在這裏, 所以你說f1和f2有同樣的圖?不是副本? – Ricardo 2009-12-29 18:29:22

+2

他們每個人對同一圖表有不同的**引用**,但是,它們是相同的圖表。 – 2009-12-29 18:31:43

+0

非常感謝! – Ricardo 2009-12-29 18:32:44

0

C#有靜態字段。您可以將SIngleton模式與靜態字段結合使用。但不要忘記,對應用程序範圍內的對象的濫用可能會降低您的設計。

2

使您的Graph實例成爲靜態類的公共靜態成員,並且出於所有實際目的,您擁有全局的靜態成員。

2

看看一個可能的方法Singleton模式具有共同的目標:

Singleton Pattern

5

做一個靜態類。需要全局訪問的變量,將它們放在該類中。

更好的想法是使用Singleton對象來表示全局可訪問的對象。

+0

請注意,任一解決方案都會導致所有消費者與Graph類緊密耦合。除此之外,這將使得難以孤立地測試這些消費者。 – TrueWill 2009-12-30 01:17:33