2009-08-06 38 views
4

所以我在過去的6年中一直在C#編程,現在我用VB.net弄溼了我的腳。Visual Basic模塊v Singleton

我正在使用的代碼庫使用了一些模塊。對我來說模塊看起來很像一個單身人士。只有一個存在;它可以在命名空間內的任何地方調用。

有什麼我在這裏失蹤? VB不支持單例構造的正常方式(私有構造函數/公共實例字段)嗎?

回答

6

模塊不是單身人士。它更類似於C#中的靜態類。如果你反編譯代碼,你會看到他們有一個非常相似的結構(模塊有一個額外的屬性)。

一個C#靜態類和VB.Net模塊之間的主要區別...

  • 不必靜態/共享預選賽添加到模塊的方法。它們在默認情況下是共享的,並且您不能更改此模塊如果某個模塊位於導入的名稱空間中,則其所有方法都可以不受限制地使用。
  • 靜態類在C#中可以通用,模塊不能(儘管它們可能具有通用名成員​​)
+0

因此,基本上與模塊一樣,它就像通過並聲明靜態內部(這將在C#中需要)。 然後,它和單例之間的區別在於,單例支持繼承(作爲派生類,或來自接口)和多態,其中模塊就是它的原型。我只是想把它全部整理出來。 – 2009-08-06 22:44:17

+0

@Joel,那種。要記住關於模塊的重要事情是有史以來沒有實例。底下它編譯到一組靜態方法(就像C#靜態類)。最大的區別是,如果包含模塊可用,它們將被添加到全局名稱範圍中。 – JaredPar 2009-08-06 22:45:30

3

如果我沒有記錯,一個VB模塊是同樣的事情作爲一個靜態類。

+1

2之間有微妙的差異,但在高水平他們是相同的。 – JaredPar 2009-08-06 21:44:21