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 内の FooNS1.Foo として指定でき、 名前空間 NS2 内の FooNS2.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 以降で利用できる機能です。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 C# 入門