Namespace 陳述式
宣告命名空間的名稱,並讓接在宣告後的原始程式碼,會於該命名空間中編譯。
語法
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 關鍵字> 一節。
Global
關鍵字也可在 Namespace 陳述式中使用。 這可讓您從專案的根命名空間定義一個命名空間。 如需詳細資訊,請參閱 Visual Basic 中的命名空間中的 <Namespace 陳述式中的 Global 關鍵字> 一節。
疑難排解。 根命名空間可能會導致非預期的命名空間串連。 如果您參考專案外部定義的命名空間,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