名前空間の名前を宣言し、宣言に続くソース コードをその名前空間内でコンパイルします。
構文
Namespace [Global.] { name | name.name }
[ componenttypes ]
End Namespace
部品
Global 省略可能。 プロジェクトのルート名前空間から名前空間を定義できます。 Visual Basic の名前空間を参照してください。
name
必須。 名前空間を識別する一意の名前。 有効な Visual Basic 識別子である必要があります。 詳細については、「 宣言された要素名」を参照してください。
componenttypes
省略可能です。 名前空間を構成する要素。 これには、列挙型、構造体、インターフェイス、クラス、モジュール、デリゲート、およびその他の名前空間が含まれますが、これらに限定されません。
End Namespace
Namespace
ブロックを終了します。
注釈
名前空間は組織システムとして使用されます。 他のプログラムやアプリケーションに公開されているプログラミング要素を分類して提示する方法を提供します。 名前空間は、クラスまたは構造体であるという意味では型ではないことに注意してください。名前空間のデータ 型 を持つプログラミング要素を宣言することはできません。
Namespace
ステートメントの後に宣言されたすべてのプログラミング要素は、その名前空間に属します。 Visual Basic では、 End Namespace
ステートメントまたは別の Namespace
ステートメントが検出されるまで、最後に宣言された名前空間に要素がコンパイルされ続けます。
プロジェクトの外部であっても、名前空間が既に定義されている場合は、それにプログラミング要素を追加できます。 これを行うには、 Namespace
ステートメントを使用して、Visual Basic に要素をその名前空間にコンパイルするように指示します。
Namespace
ステートメントは、ファイルレベルまたは名前空間レベルでのみ使用できます。 つまり、名前空間の 宣言コンテキスト はソース ファイルまたは別の名前空間である必要があり、クラス、構造体、モジュール、インターフェイス、またはプロシージャにすることはできません。 詳細については、「 宣言コンテキストと既定のアクセス レベル」を参照してください。
1 つの名前空間を別の名前空間内で宣言できます。 宣言できる入れ子のレベルに厳密な制限はありませんが、他のコードが最も内側の名前空間で宣言された要素にアクセスする場合は、入れ子階層のすべての名前空間名を含む修飾文字列を使用する必要があることに注意してください。
アクセス レベル
名前空間は、 Public
アクセス レベルがあるかのように扱われます。 名前空間には、同じプロジェクト内の任意の場所のコード、プロジェクトを参照する他のプロジェクト、およびプロジェクトからビルドされたアセンブリからアクセスできます。
名前空間レベルで宣言されたプログラミング要素は、名前空間内では宣言されますが、他の要素内では宣言されていない場合は、 Public
または Friend
アクセスできます。 指定しない場合、このような要素のアクセス レベルは既定で Friend
を使用します。 名前空間レベルで宣言できる要素には、クラス、構造体、モジュール、インターフェイス、列挙型、デリゲートがあります。 詳細については、「 宣言コンテキストと既定のアクセス レベル」を参照してください。
ルート名前空間
プロジェクト内のすべての名前空間名は、 ルート名前空間に基づいています。 Visual Studio では、プロジェクト内のすべてのコードの既定のルート名前空間としてプロジェクト名が割り当てられます。 たとえば、プロジェクトの名前が Payroll
の場合、そのプログラミング要素は名前空間 Payroll
に属します。
Namespace funding
を宣言すると、その名前空間の完全な名前がPayroll.funding
。
ジェネリック リスト クラスの例のように、 Namespace
ステートメントで既存の名前空間を指定する場合は、ルート名前空間を null 値に設定できます。 これを行うには、[プロジェクト] メニューの [プロジェクトのプロパティ] をクリックし、[ルート名前空間] エントリをオフにして、ボックスが空になるようにします。 ジェネリック リスト クラスの例でこれを行わなかった場合、Visual Basic コンパイラは、Payroll.System.Collections.Generic
の完全な名前を持つプロジェクト Payroll
内の新しい名前空間としてSystem.Collections.Generic
を受け取ります。
または、 Global
キーワードを使用して、プロジェクトの外部で定義されている名前空間の要素を参照することもできます。 これにより、プロジェクト名をルート名前空間として保持できます。 これにより、プログラミング要素を既存の名前空間の要素と誤ってマージする可能性が低くなります。 詳細については、 Visual Basic の名前空間の「完全修飾名のグローバル キーワード」セクションを参照してください。
Global
キーワードは、Namespace ステートメントでも使用できます。 これにより、プロジェクトのルート名前空間から名前空間を定義できます。 詳細については、 Visual Basic の名前空間の「名前空間ステートメントのグローバル キーワード」セクションを参照してください。
Troubleshooting. ルート名前空間によって、名前空間名が予期せず連結される可能性があります。 プロジェクトの外部で定義されている名前空間を参照する場合、Visual Basic コンパイラは、ルート名前空間内の入れ子になった名前空間として解釈できます。 このような場合、コンパイラは外部名前空間で既に定義されている型を認識しません。 これを回避するには、「ルート名前空間」の説明に従ってルート名前空間を null 値に設定するか、 Global
キーワードを使用して外部名前空間の要素にアクセスします。
属性と修飾子
名前空間に属性を適用することはできません。 属性はアセンブリのメタデータに情報を提供します。これは、名前空間などのソース分類子にとって意味がありません。
アクセス修飾子またはプロシージャ修飾子、またはその他の修飾子を名前空間に適用することはできません。 型ではないため、これらの修飾子は意味がありません。
例 1
次の例では、2 つの名前空間を宣言します。1 つは入れ子になっています。
Namespace n1
Namespace n2
Class a
' Insert class definition.
End Class
End Namespace
End Namespace
例 2
次の例では、1 行に複数の入れ子になった名前空間を宣言します。これは前の例と同じです。
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
こちらも参照ください
.NET