none
MODULE與 class 的差別?? RRS feed

解答

  • Module 陳述式定義可以在命名空間中使用的參考型別 (Reference Type)。「模組」(有時稱為「標準模組」) 與類別 (Class) 類似,但有一些重要區別。每個模組都只可有一個執行個體,且不需要建立或指派給變數。模組不支援繼承 (Inheritance) 或實作介面。請注意,就這種意義而言,模組不是類別或結構的「型別」。不可將程式設計項目宣告成具有模組的資料型別。

    只可以在命名空間層級使用 Module。這表示模組的「宣告內容」必須是原始程式檔或命名空間,且不可以是類別、結構、模組、介面、程序或區塊。不可在另一個模組內或任何型別內巢狀化模組。

    模組的存留期 (Lifetime) 與程式相同。因為它的成員都是 Shared,所以它們的存留期也等於程式的存留期。

    模組預設值為 Friend (Visual Basic) 存取。您可以使用存取修飾詞調整存取層級。

    2006年8月20日 上午 10:11
    版主

所有回覆

  • Module 陳述式定義可以在命名空間中使用的參考型別 (Reference Type)。「模組」(有時稱為「標準模組」) 與類別 (Class) 類似,但有一些重要區別。每個模組都只可有一個執行個體,且不需要建立或指派給變數。模組不支援繼承 (Inheritance) 或實作介面。請注意,就這種意義而言,模組不是類別或結構的「型別」。不可將程式設計項目宣告成具有模組的資料型別。

    只可以在命名空間層級使用 Module。這表示模組的「宣告內容」必須是原始程式檔或命名空間,且不可以是類別、結構、模組、介面、程序或區塊。不可在另一個模組內或任何型別內巢狀化模組。

    模組的存留期 (Lifetime) 與程式相同。因為它的成員都是 Shared,所以它們的存留期也等於程式的存留期。

    模組預設值為 Friend (Visual Basic) 存取。您可以使用存取修飾詞調整存取層級。

    2006年8月20日 上午 10:11
    版主
  • 對不起,還是看不太懂,能不能舉個範例??
    2006年8月21日 上午 03:08
  • 把模組當成全域類別吧 .

    以下的模組程式碼:

    Module MyModule

    Public Function xxxxxx As xxx
    ....
    End Function

    Public Sub xxxxxx As xxx
    ....
    End Sub

    End MyModule

    等同於下面的類別:

    Public Class MyModule

    Public Shared Function xxxxxx As xxx
    ...
    End Function

    Public Shared Sub xxxxxx As xxx
    ...
    End Sub

    End Class

    呼叫方法都是〔模組/類別名稱.函式名稱〕:MyModule.xxxxxx()

    2006年8月21日 上午 03:19
    版主
  • 請教一下小朱

    小弟閱讀一些書籍或是在網路上看到的資料

    也都與您描述的無異

    那麼是不是可以全然使用類別來取代模組呢?

    這會不會有什麼樣的缺點或盲點?

    又或是模組事實上是可以完成一些類別所達不到的功能?

    因為我想既然會有模組這項技術(觀念)

    應該是有它當時發展的背景存在吧

    還請為小弟解惑, 感謝

    2006年8月22日 上午 01:24
  • 當然可以用類別來取代模組 .
    而且這也是 OOP 比較建議的方式,因為模組並不符合 OOP 的精神 .
    模組是在 VB6 時代留下來的,當時只是要做全域性的函式處理(我認為啦),而且 VB6 許多 OOP 的能力較欠缺 .

    但在 VB.NET,OOP 較為完整,模組的存在就有點不太搭 ...
    至於有沒有特異功能,這 ... 要請其他大大來說明了 .

    2006年8月22日 上午 03:13
    版主
  • 了解了, 謝謝小朱!
    2017年8月13日 上午 07:23