前幾天,有一個做測試的問我.NET Framework是什麼,和C#是什麼關系呢。
下面我就來解釋一下.NET Framework是什麼:.NET Framework是一個框架,是應用程序運行時所需要的執行環境,它為應用程序的執行提供有幾種服務:
(1)全面的類庫:提供了豐富的類庫供程序員使用,使程序員的開發更具效率。
(2)內存管理:在其他編程語言中,有許多是需要程序員來負責內存的分配和釋放以及管理對象生命周期。在.NET Framework的框架下, 程序員可以不必擔心內存的問題(當然,這不是絕對的),因為它提供了優質的內存管理服務。
(3)通用類型系統(Common Type System,CTS):其定義了可以在中間語言(IL,接下來會解釋)中使用的預定義數據類型。
(4)開發結構和技術:.NET Framework提供了開發特定程序所需要的庫,比如WPF,WCF,ASP.NET等。
(5)語言的互操作性:在.NET Framework上的語言編譯器都提供了生成中間語言(IL,至於什麼是IL,下一篇解釋)的機制,這種機制使得不同的語言可以互相操作。
以上的這些只是一個簡單的概念,下面就來看一下.NET Framework由什麼組成:
.NET Framework主要有兩個部分組成:一是公共語言運行時(Common Language Runtime,CLR);二是.NET Framework類庫(Framework Class Library,FCL)。
1、公共語言運行時(CLR)
它是.NET Framework的核心基礎。我覺得可以把它看成是一個容器,在這個容器裡面,它提供了內存管理,線程管理,異常處理,檢查類型安全等服務。放在裡面執行的代碼叫做托管代碼(managed code),沒有放在裡面執行的代碼成為非托管代碼(unmanaged code)。一般C#所寫出來的代碼都是托管代碼。
CLR包含兩個組成部分:通用類型系統(Common Type System,CTS,上文有提及)和公共語言規范(Common Language Specification,CLS)。
2、.NET Framework類庫(FCL)
它是一組DLL程序集的集合,包含了大量定義好的類型以及功能。程序員可以利用這些功能,快速的進行出多種應用程序,比如WPF,Windows Form和ASP.NET應用程序。
下圖很好的解釋了.NET Framework的情況:紅色框框內的東西就是.NET Framework的組成部分。
那接下來就來說說第二個問題,C#與.NET Framework的關系是什麼呢?
其實上面的那個圖片應該也解釋得清楚了,C#是面向.NET Framework開發的語言。除了C#之外,VB.NET和F#也都是一樣的。
打個比較經典的比喻吧:.NET Framework相當於是一艘航空母艦,在這艘艦艇上面可以搭載很多種型號的飛機,比如殲11(C#),海直八(VB.NET),空警200(F#)等。都可以在.NET Framework這艘航空母艦上運行。