.NET の名前空間 |
アセンブリ内で定義されているオブジェクトは、名前空間によって組織化されています。アセンブリには複数の名前空間を含めることができ、また名前空間内に他の名前空間を含めることもできます。名前空間は、クラスライブラリなど多数のオブジェクトを使用する場合において、あいまいさをなくし参照をシンプルにします。
たとえば、BarCode for WPF の C1BarCode クラスは、C1.WPF.BarCode 名前空間に定義されています。 以下のコードは、このクラスの完全修飾名を使用して C1BarCode コンポーネントを宣言する方法を示しています。
名前空間は、別のライブラリで類似した名前が使用されていることによってクラスライブラリの開発者が遭遇する、「名前空間の汚染」と呼ばれる問題に対処します。既存のコンポーネントとこれらの競合は、「名前の競合」とも呼ばれています。
たとえば、C1BarCode という名前の新しいクラスを作成した場合、そのクラスは修飾子をつけることなくプロジェクト内で使用できます。ただし、同じプロジェクト内で C1BarCode アセンブリに含まれる C1BarCode クラスを使用する場合は、完全修飾参照を使用して参照を一意にする必要があります。 参照が一意でない場合、Visual Studio は名前があいまいであることを示すエラーを生成します。以下のコードは、これらのオブジェクトを宣言する方法を示しています。
// 新しい C1BarCode オブジェクトを宣言します。 C1BarCode MyBarCode; // 新しい C1.WPF.BarCode.C1BarCode オブジェクトを宣言します。 C1.WWPF.BarCode.C1BarCode C1BarCode1;
エイリアスなしで Imports ステートメントを使用すると、プロジェクトに固有のものであれば、その名前空間内のすべての名前を修飾子をつけることなく使用できます。