Csharp-namespaces

提供:Dev Guides
移動先:案内検索

C#-名前空間

  • 名前空間*は、ある名前のセットを別の名前のセットから分離する方法を提供するために設計されています。 あるネームスペースで宣言されたクラス名は、別のネームスペースで宣言された同じクラス名と競合しません。

名前空間の定義

名前空間の定義は、次のようにキーワード namespace で始まり、その後に名前空間名が続きます-

namespace namespace_name {
  //code declarations
}

関数または変数の名前空間対応バージョンを呼び出すには、次のように名前空間名を追加します-

namespace_name.item_name;

次のプログラムは、名前空間の使用を示しています-

using System;

namespace first_space {
   class namespace_cl {
      public void func() {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space {
   class namespace_cl {
      public void func() {
         Console.WriteLine("Inside second_space");
      }
   }
}
class TestClass {
   static void Main(string[] args) {
      first_space.namespace_cl fc = new first_space.namespace_cl();
      second_space.namespace_cl sc = new second_space.namespace_cl();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Inside first_space
Inside second_space

_using_キーワード

*using* キーワードは、プログラムが指定された名前空間の名前を使用していることを示します。 たとえば、プログラムで *System* 名前空間を使用しています。 クラスConsoleはそこで定義されています。 私たちはただ書く-
Console.WriteLine ("Hello there");

完全修飾名を次のように書くこともできます-

System.Console.WriteLine("Hello there");
*using* 名前空間ディレクティブを使用して、名前空間の先頭に追加することも回避できます。 このディレクティブは、後続のコードが指定された名前空間の名前を使用していることをコンパイラーに伝えます。 したがって、名前空間は、次のコードのために暗示されています-

ディレクティブを使用して、前述の例を書き換えましょう-

using System;
using first_space;
using second_space;

namespace first_space {
   class abc {
      public void func() {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space {
   class efg {
      public void func() {
         Console.WriteLine("Inside second_space");
      }
   }
}
class TestClass {
   static void Main(string[] args) {
      abc fc = new abc();
      efg sc = new efg();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Inside first_space
Inside second_space

入れ子になった名前空間

次のように、別のネームスペース内にあるネームスペースを定義できます-

namespace namespace_name1 {

  //code declarations
   namespace namespace_name2 {
     //code declarations
   }
}

次のようにドット(。)演算子を使用して、ネストされた名前空間のメンバーにアクセスできます-

using System;
using first_space;
using first_space.second_space;

namespace first_space {
   class abc {
      public void func() {
         Console.WriteLine("Inside first_space");
      }
   }
   namespace second_space {
      class efg {
         public void func() {
            Console.WriteLine("Inside second_space");
         }
      }
   }
}
class TestClass {
   static void Main(string[] args) {
      abc fc = new abc();
      efg sc = new efg();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Inside first_space
Inside second_space