C#命名空間和程序集學(xué)習(xí)筆記
學(xué)習(xí)C#語言時,經(jīng)常會遇到C#命名空間和程序集問題,這里將介紹C#命名空間和程序集問題的解決方法。
除了依賴于幾個系統(tǒng)提供的類(如 System.Console),到目前為止介紹的程序都是獨(dú)立存在的。但更常見的情況是:實(shí)際的應(yīng)用程序由若干不同的部分組成,每個部分分別進(jìn)行編譯。例如,企業(yè)級應(yīng)用程序可能依賴于若干不同的組件,其中包括某些內(nèi)部開發(fā)的組件和某些從獨(dú)立軟件供應(yīng)商處購買的組件。
C#命名空間和程序集有助于開發(fā)基于組件的系統(tǒng)。命名空間提供一個邏輯組織體系。命名空間既用作程序的“內(nèi)部”組織體系,也用作“外部”組織體系(一種表示向其他程序公開程序元素的途徑)。
程序集用于物理打包和部署。程序集可以包含類型、用于實(shí)現(xiàn)這些類型的可執(zhí)行代碼以及對其他程序集的引用。
有兩種主要的程序集:應(yīng)用程序和庫。應(yīng)用程序有一個主入口點(diǎn),通常具有 .exe 文件擴(kuò)展名;而庫沒有主入口點(diǎn),通常具有 .dll 文件擴(kuò)展名。
為了說明C#命名空間和程序集的使用,本節(jié)再次以前面介紹的“hello, world”程序?yàn)槔?,并將它分為兩個部分:提供消息的類庫和顯示消息的控制臺應(yīng)用程序。
這個類庫僅含一個名為 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
- {...}
僅是若干層命名空間嵌套的簡寫形式。若不簡化,則應(yīng)該像下面這樣聲明:
- namespace Microsoft
- {
- namespace CSharp
- {
- namespace Introduction
- {...}
- }
- }
將“hello, world”組件化的下一個步驟是編寫使用 HelloMessage 類的控制臺應(yīng)用程序??梢允褂么祟惖耐耆薅?Microsoft.CSharp.Introduction.HelloMessage,但該名稱太長,使用起來不方便。一種更方便的方法是使用 “using 命名空間指令”,這樣,使用相應(yīng)的命名空間中的所有類型時就不必加限定名稱。示例
【編輯推薦】