Module 陳述式
宣告模組的名稱,並引入組成模組之變數、屬性、事件和程序的定義。
[ <attributelist> ] [ accessmodifier ] Module name
[ statements ]
End Module
組件
attributelist
選擇項。請參閱 屬性清單 (Visual Basic)。accessmodifier
選擇項。可以是下列其中一項:請參閱 Visual Basic 中的存取層級。
name
必要項。這個模組的名稱。請參閱宣告項目名稱 (Visual Basic)。statements
選擇項。定義這個模組之變數、屬性、事件、程序和巢狀型別的陳述式。End Module
結束 Module 定義。
備註
Module 陳述式定義可以在命名空間中使用的參考型別 (Reference Type)。「模組」(有時稱為「標準模組」) 與類別 (Class) 類似,但有一些重要區別。每個模組都只可有一個執行個體,且不需要建立或指派給變數。模組不支援繼承 (Inheritance) 或實作介面。請注意,就這種意義而言,模組不是類別或結構的「型別」。不可將程式設計項目宣告成具有模組的資料型別。
只可以在命名空間層級使用 Module。這表示模組的「宣告內容」必須是原始程式檔或命名空間,且不可以是類別、結構、模組、介面、程序或區塊。不可在另一個模組內或任何型別內巢狀化模組。如需詳細資訊,請參閱宣告內容和預設存取層級 (Visual Basic)。
模組的存留期 (Lifetime) 與程式相同。因為它的成員都是 Shared,所以它們的存留期也等於程式的存留期。
模組預設值為 Friend (Visual Basic) 存取。您可以使用存取修飾詞調整存取層級。如需詳細資訊,請參閱 Visual Basic 中的存取層級。
模組的所有成員都是隱含 Shared。
類別和模組
這些項目有許多相似點,但也有一些重要的差異。
用語 舊版的 Visual Basic 可以辨認兩種模組:「類別模組」(Class Module,.cls 檔案) 和「標準模組」(Standard Module,.bas 檔案)。目前的版本會分別呼叫這些「類別」和「模組」。
共用成員 :您可以控制類別成員是共用成員或執行個體成員。
物件導向 :類別為物件導向,但模組不是。所以只有類別可具現化 (Instantiated) 為物件。如需詳細資訊,請參閱 Visual Basic 中的物件和類別。
規則
修飾詞。 所有模組成員都是隱含 Shared (Visual Basic)。宣告成員時,不可使用 Shared 關鍵字,且不可改變任何成員的共用狀態。
繼承 模組無法繼承非 Object 的其他任何型別,所有模組都是從該型別繼承。特別地是,某個模組不可繼承另一個模組。
即使指定 Object,也不可在模組定義中使用 Inherits 陳述式。
預設屬性 您無法在模組中定義任何預設屬性。如需詳細資訊,請參閱Default (Visual Basic)。
行為
存取層級 :在模組內,可宣告每個成員都具有它自己的存取層級。模組成員預設值為 Public (Visual Basic) 存取,但不包含變數和常數,它們是預設值為 Private (Visual Basic) 存取。模組的存取比它的任何一個成員還受限制時,則所指定的模組存取層級的優先順序較高。
範圍。 :模組是位在命名空間中的範圍內。
每個模組成員的範圍是整個模組。請注意,所有成員接受「型別提升」,會讓它們的範圍提升成內含模組的命名空間。如需詳細資訊,請參閱 型別提升 (Visual Basic)。
限定性條件。 :在專案中可以有多個模組,且可以在兩個以上的模組中宣告同名的成員。然而,如果這類具有適當模組名稱之成員的任何參考是來自該模組的外部,則必須限定該參考。如需詳細資訊,請參閱 已宣告之項目的參考 (Visual Basic)。
範例
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