C#文法リファレンス - 名前空間
オブジェクトの名前を整理整頓し、名前の衝突を防ぐのと同時に、人の理解を助けます。
日常でたとえると
ここから言う用語は数学の用語、歴史の用語など、人は何かのものをいうとき、分類を言います。それをプログラミングの世界では名前空間と言います。
使用に適した状況
お遊び以外のプログラミングをする際にはは常に使用するべきです。名前の衝突は意外と深刻な問題です。
サンプル
/*----------------------------------------------------
*
* 名前空間
*
----------------------------------------------------*/
using System;
namespace A
{
class Foo
{
public static void Print( )
{
Console.WriteLine( "A名前空間のFooです♪" );
}
}
}
namespace B
{
class Foo
{
public static void Print()
{
Console.WriteLine( "B名前空間のFooです♪" );
}
}
}
class Sample
{
static void Main()
{
//フルネームで指定する
A.Foo.Print( );
B.Foo.Print( );
}
}
文法
「namespace」キーワードと名前を指定します。名前空間は入れ子にできます。定義した名前空間を呼び出すのは簡単で、特別な文法はありません。
解説
プログラミングをする上で避けては通れない問題が、名前の衝突です。特に業務でプログラミングをしていると、Customerオブジェクトなどのよくあるオブジェクトが何度も出てきたりします。それらのオブジェクトは、プロジェクト毎に微妙に定義が異なるので使いまわしはできません。それゆえに、同じ名前でも別のオブジェクトと考えたほうが自然です。しかしながら、名前が同じだと、記号列を書くプログラミングにおいては、区別ができないので非常に問題です。
この厄介な名前の衝突問題を防ぐのが名前空間です。名前空間を使用すると、同名異種のオブジェクトをなに不自由なく定義できます。とはいえ、名前空間の文法そのそのものは簡単ですが、実際にどのように名前空間を設定するのは難しいです。
うまい名前空間を設定すると、オブジェクトが綺麗に整理整頓され、人間が理解する上で大きな助けになります。その逆に下手な名前空間は、人間を混乱させます。また、名前空間は入れ子状態にできますが、それでも名前が衝突する可能性があります。それをどう防ぐのかよく考えたほうが良いでしょう。