16.2.3 改寫“Welcome”程序
為了演示名字空間的基本用法,我們把第三章的“Welcome”程序分為庫和控制台兩部分。庫用來提供顯示的消息,控制台程序執行顯示。
首先讓我們看一下庫文件,其中包含了一個WelcomeMessage類。
程序清單16-1:
//庫文件 WelcomeLibrary.cs namespace MyProgram.CSharp.FirstApp { public class Welcome.Message { string m_message; public WelcomeMessage() { m_message="Welcome!"; } public string Message{ get{ return m_message; } set{ m_message=value; } } } }
上面的代碼展示了在名字空間MyProgram.CSharp.FirstApp定義的類WelcomeMessage,類WelcomeMessage提供了可讀的屬性Message。我們看到,名字空間可以嵌套,比如聲明:
namespace MyProgram.CSharp.FirstApp
{...}
實際上是以下多層名字空間的嵌套:
namespace MyProgram { namespace CSharp { namespace FirstApp {...} } }
“Welcome”程序組件化的下一步就是編寫客戶控制台程序,客戶程序將使用庫中提供的類WelcomeMessage。實際上WelcomeMessage這個類的全名應該是MyProgram.CSharp.FirstApp.WelcomeMessage,但這種方法使用的書寫的名字太長,顯得過於笨拙。一個簡單的方法是預先導入名字空間,這樣就可以不通過全名來使用名字空間的所有類型。
程序清單16-2:
//客戶程序源文件WelcomeApp.cs using System; using MyProgram.CSharp.FirstApp; class WelcomeApp { public static void Main(){ WelcomeMessage M=new WelcomeMessage(); System.Console.WriteLine(M.Message); System.Console.WriteLine("Please Enter your name:"); string input=System.Console.ReadLine(); M.Message="Welcome"+input; System.Console.WriteLine(M.Message); } }
上例中,導入了名字空間MyProgram.CSharp.FirstApp後,每次出現的WelcomeMessage實際上就是MyProgram.CSharp.FirstApp.WelcomeMessage的簡寫。
我們寫的代碼可以編譯後產生一個包含類WelcomeMessage的庫,以及一個包含類WelcomeApp的應用程序。具體的編譯步驟的細節,可能會因為使用編譯器或工具的不同而不同。使用Visual Studio 7.0提供的命令行編譯器,正確的語法應該是:
csc /target:library WelcomeLibrary.cs
上面這條語句產生WelcomeLibrary.dll類庫。
csc /reference:WelcomeLibrary.dll WelcomeApp.cs
上面這條語句產生WelcomeApp.exe應用程序。