Module 陳述式

宣告模組的名稱,並導入模組所包含之變數、屬性、事件和程序的定義。

語法

[ <attributelist> ] [ accessmodifier ]  Module name
    [ statements ]
End Module

組件

attributelist
選擇性。 請參閱屬性清單

accessmodifier
選擇性。 可以是下列其中一項:

請參閱 Access levels in Visual Basic

name
必要。 此模組的名稱。 請參閱 Declared Element Names

statements
選擇性。 定義此模組之變數、屬性、事件、程序和巢狀型別的陳述式。

End Module
終止 Module 定義。

備註

Module 陳述式會定義其命名空間中可用的參考型別。 模組 (有時稱為標準模組) 類似於類別,但有幾項重要的區別。 每個模組只有一個執行個體,不需要建立或指派給變數。 模組不支援繼承或實作介面。 請注意,模組不是類別或結構的型別,您無法宣告程式設計元素具有模組的資料型別。

您只能在命名空間層級使用 Module。 這表示模組的宣告內容必須是來源檔案或命名空間,而不能是類別、結構、模組、介面、程序或區塊。 您無法將模組置於另一個模組或任何型別的巢狀結構內。 如需詳細資訊,請參閱宣告內容和預設存取層級

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

模組的預設值為 Friend 存取。 您可以使用存取修飾詞調整其存取層級。 如需詳細資訊,請參閱 Visual Basic 的存取層級

模組的所有成員都隱含 Shared

類別和模組

這些元素有許多相似之處,但也有一些重要的差異。

  • 術語: 舊版 Visual Basic 可辨識兩種型別的模組:類別模組 (.cls 檔案) 和 標準模組 (.bas 檔案)。 目前的版本會分別呼叫這些類別模組

  • 共用成員。 您可以控制類別的成員為共用或執行個體成員。

  • 物件導向。 類別是物件導向,但模組不是。 因此,只有類別可以具現化為物件。 如需詳細資訊,請參閱物件和類別

規則

  • 修飾元。 所有模組成員都會隱含共用。 宣告成員時,您無法使用 Shared 關鍵字,也無法改變任何成員的共用狀態。

  • 繼承: 模組無法繼承 Object 以外的任何型別,所有模組都繼承自該型別。 特別是,模組無法繼承其他模組。

    您無法在模組定義中使用 Inherits 陳述式,甚至不能指定 Object

  • 預設屬性。 您無法在模組中定義任何預設屬性。 如需詳細資訊,請參閱預設

行為

  • 存取層級。 在模組中,您可以使用成員自己的存取層級來宣告每個成員。 除了變數和常數的預設存取為 Private 存取之外,模組成員的存取預設為 Public。 當模組的存取限制較其任何成員更為嚴格時,會優先採用指定的模組存取層級。

  • [範圍]。 模組的整個命名空間都在範圍內。

    每個模組成員的範圍都是整個模組。 請注意,所有成員都會經歷型別提升,這會導致其範圍提升至包含模組的命名空間。 如需詳細資訊,請參閱型別提升

  • 限定性條件。 一個專案中可以有多個模組,而且兩個或多個模組中可以宣告名稱相同的成員。 不過,如果參考來自該模組外部,您必須使用適當的模組名稱限定這類成員的任何參考。 如需詳細資訊,請參閱 References to Declared Elements

範例

Public Module thisModule
    Sub Main()
        Dim userName As String = InputBox("What is your name?")
        MsgBox("User name is " & userName)
    End Sub
    ' Insert variable, property, procedure, and event declarations.
End Module

另請參閱