程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 關於C#與.NET Framework,

關於C#與.NET Framework,

編輯:C#入門知識

關於C#與.NET Framework,


前幾天,有一個做測試的問我.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)。

  • CTS:C#和VB.NET是兩種還有比較使用的語言,它們都是由CLR進行管理的,但是它們在語法和數據類型方面都是不一樣的,CLR是怎樣進行托管呢?CTS就是用來解決這個問題的,它解決了不同語言之間數據類型不同的問題,for example:C#中定義整型用int,而VB用的是Integer,很明顯的不一樣,通過CTS可以把這兩個類型變成通用的Int32。所有的.NET Framework都共享這一類型系統,從而使它們可以實現無縫互操作。
  • CLS:剛才說到了CTS解決了數據類型的不一樣,那CLS就是用來解決語法規范上的區別。CLS是一種最低的語言標准,它指定了以.NET平台為目標的語言所必須支持的最小特征,以及某一語言與其他.NET語言之間實現互操作所需要的完備特征。認識到這點很重要,這裡討論的特征問題已不僅僅是語言間的簡單語法區別。例如,CLS並不去關心一種語言用什麼關鍵字實現繼承,只是關心該語言如何支持繼承。CLS是CTS的一個子集。這就意味著一種語言特征可能符合CTS標准,但又超出CLS的范疇。例如:C#支持無符號數字類型,該特征能通過CTS的測試,但CLS卻僅僅識別符號數字類型。因此,如果用戶在一個組件中使用C#的無符號類型,就可能不能與不使用無符號類型的語言(如VB.NET)設計的.NET組件實現互操作。

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這艘航空母艦上運行。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved