2016-11-14 64 views
1

我有我的VB.Net模塊的「奇怪」的情況,根據我的理解,在VB.Net Module意味着靜態類,所以我已經實現了幾個輔助模塊與幾個函數每個,讓我們有更好的解釋一些例子(放開手腳代碼,可能包含語法問題):VB.Net模塊行爲

Namespace Helpers 
    Module HelperA 
     Public Function FunctionA() As Boolean 
      Return True 
     End Function 
    End Module 
End Namespace 

Namespace Helpers 
    Module HelperB 
     Public Function FunctionB() As Integer 
      Return 1 
     End Function 
    End Module 
End Namespace 

當我在Visual Studio中開始編碼,並輸入Helpers.,既FunctionA()FunctionB()在推薦自動完成露面對話框,我還沒有鍵入HelperAHelperB,但我有一些C#.Net項目與靜態類,我發現這樣的行爲不適用於C#。淨靜態類。

這是怪我和不便,因爲我現在有一個命名空間下50上下的功能,也做了一些谷歌,但沒有什麼可以發現,任何人都可以提出一個解決方案(除了改變ModuleClass)或任何關鍵字用搜索?

任何幫助將不勝感激!

回答

2

Module在技術上並不意味着靜態類。 VB.net中的靜態(關於函數)是Shared,並且沒有Shared Class。我想你想要的是一個帶有靜態/共享函數的密封/抽象/不可繼承的類(你可以在沒有父類實例的情況下調用函數,但是當你需要父類時,你仍然需要引用父類調用該函數)。如果是這樣的話,然後做類似下面的東西:

Public NotInheritable Class HelperA 
    Public Shared Function FunctionA() as Boolean 
     Return True 
    End Function 
End Class 

話雖如此,我發現,在實際至少目的之間共享的功能和模塊的功能,唯一的區別是,模塊功能可以在不參考模塊的情況下調用。

+0

謝謝不平衡!很高興你爲我節省了很多時間! –

+0

'Module'中的'Methods'出現在'Module'的父名稱空間以及模塊內部。這是爲了與VB6語法兼容 – SSS