名前空間
最終更新:
atachi
名前空間
名前空間を使用してクラスを定義すると、クラス名のブッキングを避けられる。
namespace My {
namespace ProjectA {
class MyClass{
}
}
namespace ProjectB {
class MyClass{
}
}
}
// または
namespace My.ProjectA {
}
上記のコードはMyClassクラスが2つ定義されていますが、この2つのクラスは別物である。
各クラスを名前空間まで考慮して表すならば次のようになる。(完全修飾名で表現する)
- My.ProjectA.MyClass
- My.ProjectB.MyClass
MyClassを使う場合は次のように完全修飾名で指定すると確実です。
My.ProjectA.MyClass obj1 = new My.ProjectA.MyClass();
My.ProjectB.MyClass obj2 = new My.ProjectB.MyClass();
using
どちらか一方のMyClassしか使わないのならば、毎回完全修飾名でクラスを指定するのは手間です。
次のようにusingキーワードを使用することで、常に指定した名前空間を使用するように指定できます。
using My.ProjectA;
MyClass obj1 = new MyClass(); // My.ProjectA.MyClass
// My.ProjectB.MyClassを使いたい場合は、
// 完全修飾名で指定すれば使用できる。
My.ProjectB.MyClass obj2 = new My.ProjectB.MyClass();
エイリアス
名前空間をusingで使用する際に、別の名前空間名としてアクセスすることができる(エイリアス)