名前空間 (Visual C# Express)
更新 : 2007 年 11 月
名前空間は、C# プログラムに存在するさまざまな型を編成するための手段です。これは、コンピュータのファイル システムにおけるフォルダの概念に似ています。フォルダと同様に、名前空間により、クラスに独自の完全修飾名を付けることができます。C# プログラムには 1 つ以上の名前空間が含まれています。それぞれの名前空間は、プログラマによって定義されるか、以前に記述されたクラス ライブラリの一部として定義されます。
たとえば、System 名前空間には、コンソール ウィンドウの読み取りと書き込みを実行するメソッドが含まれているクラスである Console クラスがあります。System 名前空間には、System.IO や System.Collections などの他の名前空間も数多く含まれています。.NET Framework だけでも 80 以上の名前空間があり、1 つの名前空間には最大で数千のクラスが含まれています。名前空間を使用することで、型やメソッドの名前が似ているために生じる混乱を最小限に抑えることができます。
名前空間の宣言の外部でクラスを記述すると、コンパイラによってそのクラスに既定の名前空間が付けられます。
名前空間の簡単な記述法
System 名前空間の Console クラスで定義されている WriteLine メソッドを使用するには、次のようなコード行を使用します。
System.Console.WriteLine("Hello, World!");
Console に含まれているすべてのメソッドの前に System を記述するのは煩雑であるため、便利な手法として、次に示すように C# ソース ファイルの先頭に using ディレクティブを挿入する方法があります。
using System;
using System; を組み込むことで System 名前空間を使用すると見なされるため、以降は次のように記述できます。
Console.WriteLine("Hello, World!");
独自の名前空間の作成
大規模なプログラムを扱うときは、一般に、名前空間を使用します。独自の名前空間を使用すると、類似した名前のメソッドや型をある程度管理できます。たとえば、統計データとイメージ ファイルをディスクから読み込むアプリケーションを記述する場合を考えてみます。このとき、Images と StatisticalData という 2 つの新しい名前空間を作成するとします。2 つの別個の名前空間を使用するので、クラス名が同一であっても、それぞれの名前空間で定義されるすべてのメソッド名は一意の名前になります。つまり、両方の名前空間に FileHandling というクラスを作成し、この両方のクラスに Load メソッドを作成できます。使用するクラスを指定するには、StatisticalData.FileHandling または Images.FileHandling を参照します。
Visual C# Express プロジェクトの各名前空間用に個別のフォルダを作成することをお勧めします。
例
FileHandling という名前のクラスを含む 2 つの名前空間を定義する例を次に示します。名前空間を指定すると、名前空間に含まれているクラスとメソッドを瞬時に区別できます。
namespace StatisticalData
{
class FileHandling
{
public void Load() {} // code to load statistical data
}
}
namespace Images
{
class FileHandling
{
public void Load() {} // code to load an image file
}
}
class Program
{
static void Main()
{
StatisticalData.FileHandling data = new StatisticalData.FileHandling();
data.Load();
Images.FileHandling image = new Images.FileHandling();
image.Load();
}
}