名前空間


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

名前空間

名前空間を使用してクラスを定義すると、クラス名のブッキングを避けられる。

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で使用する際に、別の名前空間名としてアクセスすることができる(エイリアス)

using My.ProjectA;
using ProjectB = My.ProjectB;
 
 
MyClass obj1 = new MyClass(); // My.ProjectA.MyClass
 
ProjectB.MyClass obj2 = new ProjectB.MyClass();

読んでいる本


Effective C#

QLOOKアクセス解析

ここを編集