C# の 名前空間
C# の名前空間とは?
C# の名前空間とは、クラス名や列挙型などの型の名前が一意になる領域のことです。
言い換えると、同じ名前空間の中では、型名は一意になるように定義する必要があります。
C# の名前空間の定義方法と使い方
ある名前空間が適用される範囲は namespace キーワードに続く {} で指定します。
次の例では NS1 という名前空間と NS2 という名前空間の二つを定義していて、 その中でそれぞれ Foo というクラスを定義しています。
namespace NS1
{
class Foo
{
public string Name { get; set; }
}
}
namespace NS2
{
class Foo
{
public string Company { get; set; }
}
}
型名は 名前空間.型名 で指定できます。
名前空間 NS1 内の Foo は NS1.Foo として指定でき、 名前空間 NS2 内の Foo は NS2.Foo として指定できます。
class Program
{
static void Main(string[] args)
{
NS1.Foo f1 = new NS1.Foo();
NS2.Foo f2 = new NS2.Foo();
}
}
他のファイルで定義された NS1.Foo 使う場合で、 特に他の名前空間の Foo 型と紛らわしくない時は、ファイルの先頭で using キーワードで名前空間を指定し、 型名を指定する時に名前空間の修飾を省略することもできます。
using NS1;
class Program
{
static void Main(string[] args)
{
Foo f1 = new Foo();
}
}
C# の using static で静的メンバーを使う
using static を使ってクラス名を指定することで、そのクラスのスタティックメンバー (静的メンバー) を使うことができます。
例えば NS1.Foo.cs で、次のように Hello() スタティック・メソッドを定義します。
using System;
namespace NS1
{
class Foo
{
public static void Hello()
{
Console.WriteLine("Hello!");
}
}
}
これを呼び出す側では、 using static を使えば、名前空間や型名の修飾無しでメソッドを呼ぶことができます。
using static NS1.Foo;
class Program
{
static void Main(string[] args)
{
Hello();
}
}
using static は C# 6 以降で利用できる機能です。