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