我們不能獨立的使用C#語言而必須和net framework 一起考慮C#編譯器專門用於net 這表示用C#編寫的所有代碼總在net Framework 中運行對於C#語言來說可以得出兩個重要的結論
C#的結構和方法論反應了net的基礎方法論
在許多的情況下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中編譯 分為兩部分
把源代碼編譯為Microsoft 中間語言(IL)
CLR把IL編譯為平台專用代碼
托管代碼的優點
他們是一種低級語言語法很簡單(使用數字代碼而不是文本代碼)可以非常快速的轉換為內部機器碼
平台無關性(編譯為中間語言就可以獲得NET平台無關性)
提高性能()
語言的互操作性(將任何一種語言編譯為中間代碼)
中間語言
中間語言特征
面向對象和使用接口
值類型和引用類型之間的巨大差別
強數據類型
使用異常來處理錯誤
使用特性
強數據類型
中間語言的一個重要方面是它基於強數據類型
我們從net提供的依賴於類型安全的服務站獲得的好處更多這些服務包括
語言的互操作性
垃圾收集
安全性
應用程序域
IL(中間語言)是區分大小寫的
垃圾收集處理目前代碼中所有變量檢查對存儲在托管堆上的對象的引用確定哪些對象可以從代碼中訪問——即哪些對象有引用沒有引用的對象就不能再從代碼中訪問因而被刪除
垃圾收集器的一個重要方面是他是不確定換言之不能保證什麼時候會調用垃圾收集器net運行庫決定需要它時就可以調用它(除非明確調用垃圾收集器)但可以重寫自己俄格過程在代碼中調用垃圾收集器
From:http://tw.wingwit.com/Article/program/net/201311/12050.html