3.4 添加注釋
應用程序並不是只要你自己一個人能看懂就行了。不管以前計算機教師或者是編程書籍是否已經告誡過,這裡我還要一再強調:養成良好的代碼注釋的習慣。這是一名優秀的程序員所必備的條件之一。代碼注釋不會浪費您的編程時間,它只會提高您的編程效率,使您的程序更加清晰、完整、友好。
C#注釋的方式和C++沒有區別,每一行中雙斜槓“//”後面的內容,以及在分割符“/*”和“*/”之間的內容都將被編譯器忽略。
這樣,我們就可以采用“//”進行單行注釋,采用分割符“/*”和“*/”進行多行注釋。讓我們對Welcome程序加上注釋:
程序清單3-5:
//源文件:welcome.cs /*說明:這裡是我的第一個 C#程序 */ using System; class Welcome { static void Main(){ Console.WriteLine("please enter your name:"); //要求用戶輸入姓名: Console.ReadLine(); //讀取用戶輸入; Console.WriteLine("Welcome to you!"); /*本行代碼用於打印歡迎信息: 您可以在這裡添加自己的代碼: 程序在這裡結束*/ } }
上面的注釋似乎有些小題大作,但它畢竟說明了C#中注釋的使用方法。
下面是對C#程序進行注釋時要注意的兩個問題:
首先,避免在“//”之後的單行注解中使用反斜槓符號“\”。因為反斜槓符號“\”在C#中是一個續行符,這樣做往往會導致你所不希望的結果出現。例如,當你寫了類似於下面的代碼:
Console.WriteLine("The result is:{0}",//\
150);
在編譯這段代碼時,“//”表示邏輯上同一行剩余的所有文字被作為注釋看待,而續行符“\”則將這一行同下一行連接起來,那麼第二行也被作為注釋的一部分。這時編譯器找不到與第一行的左括號“(”相匹配的右括號“)”,因此編譯出錯。
其次,分割符“/*”和“*/”之間的注釋不能有嵌套注釋。這是因為,C#編譯器從遇到第一個分割符“/*”開始,將忽略下一個“/*”,直到遇上下一個與之匹配的分割符“*/”才認為注釋結束,這樣編譯器就會對多余的“*/”報告錯誤,認為沒有“/*”與之相匹配。
一些程序員經常習慣於把程序中不需要或暫時不需要的代碼片段首尾分別加上分割符“/*”和“*/”。這時,如果這些代碼片段本身又含有注釋的話,我們所討論的這種錯誤就會發生。這時,我們建議您換一種方式,把預處理語句# if #endif等貫穿在程序中使用,因為它們可以強制編譯器忽略已包含注釋的源代碼片段,從而通過這種方式來實現源代碼的嵌套注釋。
以上提到的在注釋中可能發生的兩種問題,如果編譯器報告錯誤,那已經是幸運的了。如果是原本錯誤的程序被認為是正確的加以編譯,或者程序代碼的原意因此被曲解,造成的錯誤往往難以發現,那時造成的後果將會嚴重得多。