C# 命名空間(Namespace)

2022-10-14 09:41 更新

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


定義命名空間

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

namespace namespace_name{
   // 代碼聲明
}

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

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í)行時,它會產(chǎn)生下列結(jié)果:

Inside first_space
Inside second_space

using 關(guān)鍵字

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

Console.WriteLine ("Hello there");

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

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

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

讓我們使用 using 指定重寫上面的實(shí)例:

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í)行時,它會產(chǎn)生下列結(jié)果:

Inside first_space
Inside second_space

嵌套命名空間

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

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

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

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

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

Inside first_space
Inside second_space
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號