《C#圖解教程》讀書心得之C#語言
這本書講解C#語言十分詳細,我將其中的重要內容整理成條款,以備忘。
1..NET 由三部分組成:CLR ,編碼工具和 BCL 。CLR 負責內存管理、代碼安全驗證、代碼執行、垃圾收集。.NET 提供平臺調用( P/Invoke ), 允許調用 Windows API ,而且還可以和 COM 進行交互操作。
2. .NET 開發人員可以不必了解 COM 的知識,無需考慮諸如 IUnknown 接口,類型庫,引用計數,注冊表以及 HRESULT(COM 使用 HRESULT) 數據類型返回運行時錯誤代碼,而 .NET 不使用 HRESULT ,因為所有的運行時錯誤都會產生異常。
3. .NET 語言的編譯器接受源代碼文件,輸出文件為程序集。程序集中的代碼并不是本地代碼,而是CIL 。程序集中包含CIL ,程序集中使用的類型的元數據以及對其他程序集引用的元數據。
4. CLR 在運行時首先檢查程序集的安全特性,然后在內存中分配空間,再把程序集中被調用到的 代碼送進 JIT 。程序集中的 CIL 只有在被調用到時才會被 JIT 編譯成本地代碼,然后就被緩存起來以備在后來的程序中執行,即不被調用的代碼不會被編譯成本地代碼,而且被調用到的代碼只被編譯一次。一旦CIL 被編譯成本地代碼,CLR 就會在運行時進行管理,如:釋放內存、檢查數組邊界、檢查參數類型、管理異常等。
5.運行在CLR ,并且在運行時受CLR 控制的代碼叫做托管代碼,反之為非托管代碼。
6. CLI( 公共語言基礎結構 ) 是一組闡述了系統的架構、規則和約定的規范。包含 CTS: 定義了一組豐富的內置類型,定義了每種類型確定的詳細的特性 , 而且所有支持 .NET 的語言提供的類型通常會映射到 CTS 中已定義的內置類型集的某一個特殊子集;CLS :詳細說明了支持 .NET 語言的規則、屬性和行為,其主題包括數據類型、類結構和參數傳遞。
7. 任何以 .NET 平臺作為目標的語言必須建立它的數據類型與CTS 的類型間的映射。所有 .NET 語言共享這一類型系統,實現他們之間無縫的互操作,這個方案提供了語言之間的繼承性。
8. 由于CLS 是CTS 的子集 , 這意味著一種語言特征可能符合CTS 標準,但卻超過了CLS 的規范,如:C#語言支持無符號數字類型,該特征能通過 CTS 測試,但 CLS 卻僅僅識別有符號數字類型。因此,如果用戶在一個組件類使用 C# 的無符號類型,就可能無法與不支持無符號類型的語言(如 VB.NET )設計的組件實現互操作,但并非不可能,實際上,用戶能夠安全實現含有 private 成員的組件,CLS 兼容性問題。但如果用戶需要 .NET 語言的互操作性,那么用戶的組件中的 public 成員必須完全符合 CLS 規范。
9. @ 字符只能放在標識符的首位,標識符的命名風格有兩種:Pascal 風格,如:CarDeck ,建議用于類型名和成員名;Camel 風格,如:totalCycleCount ,建議用于本地變量和方法參數。
10.兩個公共約定:字段名稱使用下劃線開頭:example 或使用 m_ 開頭: m_example 。
11. 在C#語言中,可以使用任意的占位符和任意數量的值,值可以以任何順序使用,值可以在格式字符串中替換任意次。例如: Console.WriteLine(”Three integers are {1}, {0}, {1}.”, 3, 6); 輸出為 Three integers are 6, 3,6.
12. 占位符不能引用值列表以外位置的值,如果這樣做了,不會產生編譯錯誤,但會產生運行時錯誤 ( 異常 ) 。
【編輯推薦】