C# 命名空间(Namespace)

命名空间設計上の目的は、一連の名前を別の名前の集合から分離する方法を提供することです。ある名前空間で宣言されたクラスの名前は、別の名前空間で宣言された同名のクラスと衝突しません。

コンピュータシステムの例を挙げると、1つのフォルダ(ディレクトリ)には複数のフォルダを含めることができ、各フォルダ内では同じファイル名を使用できませんが、異なるフォルダ内のファイルは同名でも構いません。

名前空間を定義する

名前空間の定義はキーワードnamespace最初に来て、その後に名前空間の名前を続けます。次に示すとおりです:

namespace namespace_name
{
   // 代码声明
}

名前空間をサポートする関数または変数を呼び出すには、名前空間の名前を先頭に置きます。次のようになります:

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指定を使用して、上記のインスタンスを書き換えてみましょう:

实例

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 
{
   // 代码声明
   namespace namespace_name2 
   {
     // 代码声明
   }
}

ドット(.)演算子を使用して、入れ子になった名前空間のメンバーにアクセスできます。次に示すとおりです:

实例

using System;
using SomeNameSpace;
using SomeNameSpace.Nested;

namespace SomeNameSpace
{
    public class MyClass
    {
        static void Main()
        {
            Console.WriteLine("In SomeNameSpace");
            Nested.NestedNameSpaceClass.SayHello();
        }
    }

    // 内嵌命名空间
    namespace Nested  
    {
        public class NestedNameSpaceClass
        {
            public static void SayHello()
            {
                Console.WriteLine("In Nested");
            }
        }
    }
}

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

In SomeNameSpace
In Nested
其他扩展