在上一篇介紹完了.Net Framework的概觀(起源.Net Framework) - 在這一篇將會介紹和.Net Framework一起誕生的語言:C#
將會了解到C#版本的歷史、主要版本之間的功能差異和.Net Compiler Platform (Roslyn) 帶來的差異
C#是什麼
C#(唸法:C Sharp)是一個語法結構類似Java的OO語言。和.Net Framework一起誕生出來,可以說C#是.Net 開發的第一語言。
目前組新的版本是 C# 7.1
C#版本功能
基本上C#會和某一個.Net Framework版本搭配,並且也會搭配某一個Visual Studio (VS) 版本一起release。
和VS一起release的原因是有些語法糖的修改,舉例來說VS 2015就不支援C# 7.0的語法 - 在VS 2015上面會出現好像錯誤,但是可以透過更新.Net Compiler Platform來達到編譯成功。
每一個Release基本上都會有一個主要的主題:
- 2.0 - 加入 泛型(Generic)因為如此1和2不兼容
- 3.0 - 加入 Linq
- 4.0 - 加入 dynamic
- 5.0 - 加入 async await
- 6.0 - 比較偏語法糖(syntax sugar)類型的修改
- 7.0 - 比較偏語法糖(syntax sugar)類型的修改
.Net Framework如何執行C#程式
C#經過編譯器(compiler)編譯之後產生的是所謂的Intermediate Language (IL),最後當使用者執行的時候,CLR在把 IL run 起來透過及時編譯(JIT compile)變成機器碼(machine code)執行在機器上面。
由於run 起來的CLR會幫忙管理底層的一些資源,例如memory的管理,因此C# 又稱之為managed code。
除了C#以外的其他.Net Framework語言
精準一點說,.Net Framework (CLR) 支援的語言只有一種,那就是 IL。
不過.Net Framework一起帶來的工具裡面包含compiler支援3種語言編譯成為IL:
- C#
- VB .Net - 語法類似VB6,當初.Net剛出來希望鼓勵大家轉.Net因此提供
- F# - 偏Functional Programing的語言,Serverless的服務Azure Function就有支援
不管是這三種語言的那種,最後compile之後(不管是exe還是dll)都是IL - 因此3種語言的結果是可以互相使用。換句話說,VB .Net寫的Library,可以直接在C#的console使用。
compiler的進化
在早期版本的C# compiler是和.Net Framework一起安裝的,這個compiler的程式名稱是csc.exe
。
不過因為很多原因(例如更容易做meta programing等好處),後來compiler被獨立出來,變成一個自己的專案叫做.Net Compiler Platform (aka Roslyn) (官方repo)。
因為這個原因,所以C# 6.0以上的compiler使用的都是Roslyn。
Roslyn的一個好處是,能夠用nuget package安裝並且在編譯的時候自動使用nuget裝的版本,而不是電腦安裝的版本。這個在CI建制上也更加方便。
結語
在這篇對於C#的基本功能有做了基本的介紹,並且也對Roslyn - 新的compiler做了基本介紹。
對於整個.Net平台和開發的語言C#應該有了一些基本的概念了之後,接下來就可以看一下.Net Core的平台概觀和.Net Framework有什麼不同。
沒有留言 :
張貼留言