C# 命名空间(Namespace)

命名空间的目的是让一组名称与其他名称分隔开,一个命名空间声明的类的名称与另一个命名空间声明的相同的类的名称不冲突。

定义命名空间

命名空间的定义以关键字 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