C# 語言規範--1.12 命名空間和程式集

來源:互聯網
上載者:User
程式|規範|命名空間

  除了依賴於幾個系統提供的類(如 System.Console),到目前為止介紹的程式都是獨立存在的。但更常見的情況是:實際的應用程式由若干不同的部分組成,每個部分分別進行編譯。例如,企業級應用程式可能依賴於若干不同的組件,其中包括某些內部開發的組件和某些從獨立軟體廠商處購買的組件。

  命名空間和程式集有助於開發基於組件的系統。命名空間提供一個邏輯組織體系。命名空間既用作程式的“內部”組織體系,也用作“外部”組織體系(一種表示向其他程式公開程式元素的途徑)。

  程式集用於物理打包和部署。程式集可以包含類型、用於實現這些類型的可執行代碼以及對其他程式集的引用。

  有兩種主要的程式集:應用程式和庫。應用程式有一個主進入點,通常具有 .exe 檔副檔名;而庫沒有主進入點,通常具有 .DLL 檔案副檔名。

  為了說明命名空間和程式集的使用,本節再次以前面介紹的“hello, world”程式為例,並將它分為兩個部分:提供訊息的類庫和顯示訊息的控制台應用程式。

  這個類庫僅含一個名為 HelloMessage 的類。樣本

// HelloLibrary.cs
namespace Microsoft.CSharp.Introduction
{
   public class HelloMessage
   {
      public string Message {
         get {
            return "hello, world";
         }
      }
   }
}

  顯示了名為 Microsoft.CSharp.Introduction 的命名空間中的 HelloMessage 類。HelloMessage 類提供一個名為 Message 的唯讀屬性。命名空間可以嵌套,而聲明

namespace Microsoft.CSharp.Introduction
{...}

  僅是若干層命名空間嵌套的簡寫形式。若不簡化,則應該像下面這樣聲明:

namespace Microsoft
{
   namespace CSharp
   {
      namespace Introduction
      {...}
   }
}

  將“hello, world”組件化的下一個步驟是編寫使用 HelloMessage 類的控制台應用程式。可以使用此類的完全限定名 Microsoft.CSharp.Introduction.HelloMessage,但該名稱太長,使用起來不方便。一種更方便的方法是使用“using 命名空間指令”,這樣,使用相應的命名空間中的所有類型時就不必加限定名稱。樣本

// HelloApp.cs
using Microsoft.CSharp.Introduction;
class HelloApp
{
   static void Main() {
      HelloMessage m = new HelloMessage();
      System.Console.WriteLine(m.Message);
   }
}

  顯示了一個引用 Microsoft.CSharp.Introduction 命名空間的 using 命名空間指令。這樣,HelloMessage 就成為 Microsoft.CSharp.Introduction.HelloMessage 的簡寫形式。

  C# 還允許定義和使用別名。using 別名指令定義類型的別名。當兩個類庫之間發生名稱衝突時,或者當使用大得多的命名空間中的少數類型時,這類別名很有用。樣本

  using MessageSource = Microsoft.CSharp.Introduction.HelloMessage;

  顯示了一個 using 別名指令,該指令將 MessageSource 定義為 HelloMessage 類的別名。

  我們已編寫的代碼可以編譯為包含類 HelloMessage 的類庫和包含類 HelloApp 的應用程式。此編譯步驟的細節可能因使用的編譯器或工具而異。使用 Visual Studio .NET 中提供的命令列編譯器時,用如下所列的命令:

  csc /target:library HelloLibrary.cs
  csc /reference:HelloLibrary.dll HelloApp.cs

  它產生一個名為 HelloLibrary.dll 的類庫和一個名為 HelloApp.exe 的應用程式。



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。