1. 程式人生 > >《Inside C#》筆記(二) 初識C#

《Inside C#》筆記(二) 初識C#

公司 有意 命令行 編輯 asc ret mman 查找 表示

一 程序的編譯、構成

a) 編寫C#代碼一般用VS,但作者在這兒介紹了使用記事本編寫C#代碼並編譯運行的過程,以便對VS有更深入的認識。

用記事本編寫C#代碼後,修改文本文件的後綴為.cs,然後用csc.exe(C# Command-Line Complier)來編譯。如果編譯成功,在命令行輸入程序的路徑和名稱便可以執行了。

b) 用命名空間來為類分組,可以在.cs文件的頭部使用Using指令來代指命名空間,後續使用類時,編輯器會從Using指令指定的命名空間中查找是否有對應的類。

還可以在Using指令區域為類創建別名,比如:

技術分享

c) 程序錯誤

對程序來說,任何意料之外發生的事都可以認為是錯誤。程序錯誤分為兩種:編譯時錯誤和運行時錯誤。前者在編譯的時候就會發生,這時編輯器會提示錯誤信息類似:

技術分享

錯誤信息告知了編譯時發生的錯誤詳情,並有錯誤代碼,比如圖中的cs0234。關於該錯誤的更詳細信息可以在.NET Framework SDK Documentation中根據錯誤碼查找。

技術分享

對於編譯時錯誤,如果一個文件中有多處錯誤,編譯器只會報第一個錯,因為只要遇到錯誤,編譯就會終止。


二 ILDASM

這裏作者詳細介紹了HelloWold.cs程序使用ILDASM生成的IL碼。

技術分享

Main函數的IL碼如下:

技術分享

程序第一行.method關鍵字表示方法,另外有public、static修飾符,最後還有managed關鍵字,與之對應的還有unmanaged、unsafe,這些作者會在後面講解。

第二行的.entrypoint表示這個方法是這個程序的入口,這在C#中對應Main函數為入口函數。

IL_0000行,ldstr為Load String的簡寫,將硬編碼“Hello, World”裝載到內存。

IL_0005行,調用Console.WriteLine函數,後面括號中的(class System.String)指示了參數的類型和個數。

最後一行還有IL_000a: ret,圖裏面漏掉了,表示返回執行結果。


三 關於命名規範

統一的命名規範有很對好處,比如降低維護成本。本書成書於2002年前後,作者還認為匈牙利命名規範(名稱中包含了變量的類型、作用域等信息)不適合面向對象語言,因為在這類語言中類型都繼承自基本類型,比如在C#中都繼承自System.Object。

推薦組合使用帕斯卡命名法(Pascal Casing)和駝峰命名法(Camel Casing),在類、方法的命名中使用帕斯卡命名法,在變量的命名中使用駝峰命名法。詳情如下:

命名空間:帕斯卡,推薦使用公司名稱

類:帕斯卡,使用能描述類的職能的名詞

方法:帕斯卡,使用描述方法動作的動詞

方法參數:帕斯卡,使用有意義的名稱

接口:帕斯卡,以大寫字母I開頭,代表某種行為,推薦使用I***able的形式

《Inside C#》筆記(二) 初識C#