C# 命名空間(Namespace)

命名空間的設(shè)計(jì)目的是提供一種讓一組名稱與其他名稱分隔開的方式。在一個(gè)命名空間中聲明的類的名稱與另一個(gè)命名空間中聲明的相同的類的名稱不沖突。

我們舉一個(gè)計(jì)算機(jī)系統(tǒng)中的實(shí)例,一個(gè)文件夾(目錄)中可以包含多個(gè)文件夾,每個(gè)文件夾中不能有相同的文件名,但不同文件夾中的文件可以重名。

圖片.png

定義命名空間

命名空間的定義是以關(guān)鍵字 namespace 開始,后跟命名空間的名稱,如下所示:

namespace namespace_name
{
   // 代碼聲明
}

為了調(diào)用支持命名空間版本的函數(shù)或變量,會(huì)把命名空間的名稱置于前面,如下所示:

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();
   }
}

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

Inside first_space
Inside second_space

using 關(guān)鍵字

using 關(guān)鍵字表明程序使用的是給定命名空間中的名稱。例如,我們?cè)诔绦蛑惺褂?System 命名空間,其中定義了類 Console。我們可以只寫:

Console.WriteLine ("Hello there");

我們可以寫完全限定名稱,如下:

System.Console.WriteLine("Hello there");

您也可以使用 using 命名空間指令,這樣在使用的時(shí)候就不用在前面加上命名空間名稱。該指令告訴編譯器隨后的代碼使用了指定命名空間中的名稱。下面的代碼演示了命名空間的應(yīng)用。

讓我們使用 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();
   }
}

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

Inside first_space
Inside second_space

嵌套命名空間

命名空間可以被嵌套,即您可以在一個(gè)命名空間內(nèi)定義另一個(gè)命名空間,如下所示:

namespace namespace_name1 
{
   // 代碼聲明
   namespace namespace_name2 
   {
     // 代碼聲明
   }
}

您可以使用點(diǎn)(.)運(yùn)算符訪問嵌套的命名空間的成員,如下所示:

using System;
using SomeNameSpace;
using SomeNameSpace.Nested;

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

    // 內(nèi)嵌命名空間
    namespace Nested   
    {
        public class NestedNameSpaceClass 
        {
            public static void SayHello() 
            {
                Console.WriteLine("In Nested");
            }
        }
    }
}

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

In SomeNameSpace
In Nested
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清