我們不能獨立的使用C#語言,而必須和.net framework 一起考慮。C#編譯器專門用於.net 這表示用C#編寫的所有代碼總在.net Framework 中運行。對於C#語言來說,可以得出兩個重要的結論:
1.C#的結構和方法論反應了.net的基礎方法論
2.在許多的情況下,C#的特定語言功能取決於.net的功能,或者依賴於.net的基類
Microsoft 中間語言(Microsoft INtermediate Langiage) 簡稱 MSIL 或者 IL
通用類型系統(Common Type System)簡稱 CTS
公共語言規范(Common Language Specification)CLS
C#與.NET的關系
C#是專門與Microsoft的.net framework 一起使用而設計的。
C#是一種基於現代面向對象設計方法的語言。
C#就其本身而言只是一種語言,盡管它是用於生成面向.net環境的代碼,但它本身不是.net的一部分。
.NET 支持的一些特性,C#不支持。而C#支持的另一些特性,而.net不支持(如運算符重載)
公共語言運行庫
.net Framework 的核心是其運行庫的執行環境,稱為公共語言運行庫(CLR)或.net 運行庫。
通常將在CLR的控制下運行的代碼稱為托管代碼(managed code)
在.net中編譯 分為兩部分:
1.把源代碼編譯為Microsoft 中間語言(IL)
2.CLR把IL編譯為平台專用代碼
托管代碼的優點:
他們是一種低級語言,語法很簡單(使用數字代碼,而不是文本代碼),可以非常快速的轉換為內部機器碼。
1.平台無關性(編譯為中間語言就可以獲得.NET平台無關性)
2.提高性能()
3.語言的互操作性(將任何一種語言編譯為中間代碼)
中間語言
中間語言特征:
1.面向對象和使用接口
2.值類型和引用類型之間的巨大差別
3.強數據類型
4.使用異常來處理錯誤
5.使用特性
強數據類型
中間語言的一個重要方面是它基於強數據類型。
我們從.net提供的,依賴於類型安全的服務站獲得的好處更多,這些服務包括
1.語言的互操作性
2.垃圾收集
3.安全性
4.應用程序域
IL(中間語言)是區分大小寫的
垃圾收集:處理目前代碼中所有變量,檢查對存儲在托管堆上的對象的引用,確定哪些對象可以從代碼中訪問----即哪些對象有引用,沒有引用的對象就不能再從代碼中訪問,因而被刪除。
垃圾收集器的一個重要方面是他是不確定。換言之,不能保證什麼時候會調用垃圾收集器:.net運行庫決定需要它時,就可以調用它(除非明確調用垃圾收集器)。但可以重寫自己俄格過程,在代碼中調用垃圾收集器。