C#で名前空間とusingディレクティブ、エイリアスを扱う方法についてソースコード付きでまとめました。
## 【名前空間とは】usingディレクティブ
冒頭の「using System;」の「System」などをnamespace(名前空間)といいます。
名前空間は、変数などが名前衝突してしまうのを回避し、管理するために導入されたスコープ定義機能です。
「using System;」は「Systemという名前空間を利用する」ことを意味し、プログラム中で名前空間の指定を省略して記述できるようになります。
つまり「using System;」と記述すれば「System内に存在するクラスの指定は、Systemを省略して記述できる」ようになります。この機能をusingディレクティブといいます。
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("XYZ");
}
}
}
上記の例では、は元々は「System.Console.WriteLine()」だったものが、「using System;」と記述してやることで、「Console.WriteLine()」で呼び出し可能となっています。
これまで、コンソール画面に文字列を出力するのに、「Console.WriteLine()」を使用してきました。
もし「using System;」と記述しなかった場合は「System.Console.WriteLine()」と記述する必要があります。
この指定の仕方は「Systemフォルダ -> Consoleフォルダ -> WriteLineファイル」を実行するというようなイメージです(階層は「.」(ドット)記号で区切って表す)。
実際には、「System名前空間 -> Consoleクラス -> WriteLineメソッド」を呼び出しています。
namespace Test
{
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("XYZ");
}
}
}
ちなみに、Visual Studioでコードを自動生成した時、プロジェクト名の名前空間が自動的に定義されています。
## 【定義】名前空間
名前空間は自分で定義することができます。
Visual Studioでコードを自動生成した時、プロジェクト名の名前空間が自動的に定義されています。
using System;
// 自動で定義された名前空間
namespace Test
{
class Program
{
static void Main(string[] args)
{
//名前空間「Test2」 -> 「Programクラス」 -> 「num」変数にアクセス
int num = Test2.Program.num;
Console.WriteLine(num);
}
}
}
// 自分で定義した名前空間
namespace Test2
{
class Program
{
public int num = 100;
}
}
## 【エイリアス】別名をつける
下記のように、名前空間にエイリアス(別名)をつけて扱うこともできます。
using Sc = System.Console;
namespace Test
{
class Program
{
static void Main(string[] args)
{
// System.Console.WriteLine("XYZ"); と同じ意味
Sc.WriteLine("XYZ");
}
}
}

コメント