宣告命名空間的名稱,並讓宣告後面的原始程式碼在該命名空間內編譯。
語法
Namespace [Global.] { name | name.name }
[ componenttypes ]
End Namespace
組件
全域選擇性。 可讓您從專案的根命名空間定義命名空間。 請參閱 Visual Basic 中的命名空間。
name 必填。 識別命名空間的唯一名稱。 必須是有效的 Visual Basic 識別碼。 如需詳細資訊,請參閱 宣告的項目名稱。
componenttypes 選用。 組成命名空間的專案。 這些包括列舉、結構、介面、類別、模組、委派和其他命名空間。
End Namespace
Namespace終止區塊。
備註
命名空間會當做組織系統使用。 它們提供一種方式來分類和呈現向其他程式和應用程式公開的程式設計元素。 請注意,命名空間不是類別或結構的類型,您無法宣告程式設計專案具有命名空間的數據類型。
在語句之後 Namespace 宣告的所有程式設計專案都屬於該命名空間。 Visual Basic 會繼續將元素編譯成最後一個 End Namespace 宣告的命名空間,直到它遇到 語句或其他 Namespace 語句為止。
如果已定義命名空間,即使在專案外部,您也可以將程式設計元素加入其中。 若要這樣做,您可以使用 Namespace 語句指示 Visual Basic 將元素編譯至該命名空間。
您只能在檔案或命名空間層級使用 Namespace 語句。 這表示命名空間的 宣告內容 必須是來源檔案或其他命名空間,而且不能是類別、結構、模組、介面或程式。 如需詳細資訊,請參閱 宣告內容和預設存取層級。
您可以在另一個命名空間內宣告一個命名空間。 您可以宣告的巢狀層級沒有嚴格的限制,但請記住,當其他程式代碼存取最內層命名空間中宣告的元素時,它必須使用限定字串,其中包含巢狀階層中的所有命名空間名稱。
存取層級
命名空間會被視為具有 Public 存取層級。 您可以從相同專案的任何位置的程式代碼、從參考專案的其他專案,以及從專案建置的任何元件存取命名空間。
在命名空間層級宣告的程式設計專案,這表示在命名空間中,但不在任何其他元素內,都可以具有 Public 或 Friend 存取權。 如果未指定,預設會使用 Friend 這類專案的存取層級。 您可以在命名空間層級宣告的元素包括類別、結構、模組、介面、列舉和委派。 如需詳細資訊,請參閱 宣告內容和預設存取層級。
根命名空間
您專案中的所有命名空間名稱都是以 根命名空間為基礎。 Visual Studio 會將專案名稱指派為專案中所有程式代碼的預設根命名空間。 例如,如果您的項目名為 Payroll,則其程式設計專案屬於 命名空間 Payroll。 如果您宣告 Namespace funding,該命名空間的完整名稱為 Payroll.funding。
如果您想要在語句中 Namespace 指定現有的命名空間,例如在泛型清單類別範例中,您可以將根命名空間設定為 Null 值。 若要這樣做,請按兩下 [專案] 選單中的 [項目屬性],然後清除 [根命名空間] 專案,讓方塊是空的。 如果您未在泛型清單類別範例中執行此動作,Visual Basic 編譯程式會採用 System.Collections.Generic 作為專案 Payroll內的新命名空間,其完整名稱為 Payroll.System.Collections.Generic。
或者,您可以使用 Global 關鍵詞來參考專案外部定義的命名空間元素。 這麼做可讓您將專案名稱保留為根命名空間。 這樣可減少無意中將程式設計專案與現有命名空間合併的機會。 如需詳細資訊,請參閱 Visual Basic中命名空間中的一節。
關鍵詞 Global 也可以在 Namespace 語句中使用。 這可讓您從專案的根命名空間定義命名空間。 如需詳細資訊,請參閱 Visual Basic中命名空間中的一節。
Troubleshooting. 根命名空間可能會導致命名空間名稱的非預期串連。 如果您參考專案外部定義的命名空間,Visual Basic 編譯程式可以將它們解釋為根命名空間中的巢狀命名空間。 在這種情況下,編譯程式無法辨識任何已在外部命名空間中定義的類型。 若要避免這種情況,請將根命名空間設定為 Null 值,如「根命名空間」中所述,或使用 Global 關鍵詞來存取外部命名空間的專案。
屬性和修飾詞
您無法將屬性套用至命名空間。 屬性會提供元件元數據的資訊,這對命名空間等來源分類器來說沒有意義。
您無法將任何存取或程式修飾詞或任何其他修飾詞套用至命名空間。 因為不是類型,所以這些修飾詞沒有意義。
範例 1
下列範例會宣告兩個命名空間,一個巢狀在另一個命名空間中。
Namespace n1
Namespace n2
Class a
' Insert class definition.
End Class
End Namespace
End Namespace
範例 2
下列範例會在單一行上宣告多個巢狀命名空間,而且相當於上一個範例。
Namespace n1.n2
Class a
' Insert class definition.
End Class
End Namespace
範例 3
下列範例會存取先前範例中定義的類別。
Dim instance As New n1.n2.a
範例 4
下列範例會定義新泛型清單類別的基本架構,並將它新增至 System.Collections.Generic 命名空間。
Namespace System.Collections.Generic
Class specialSortedList(Of T)
Inherits List(Of T)
' Insert code to define the special generic list class.
End Class
End Namespace