iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 1
1

這次的 30 天鐵人賽,題目是從零開始的 C# 新手筆記,因此文章會比較專注於 C# 語言本身,內容會比較偏向個人筆記,如果內容或觀念有誤的話也歡迎各位指點一下小弟。

在學習 C# 語言前,得先對它有初步的認識:

C#(C Sharp)是由微軟的 Anders Hejlsberg 所主導開發的程式語言,為型別安全的物件導向語言。
作為 C 家族的一份子, C# 在設計時延續了 C/C++ 的語言架構,並簡化其複雜度,使之不會像 C++ 一樣如此艱澀難懂;同時 C# 也參考了 JAVA 的優點,採用直譯器做編譯,實行記憶體回收功能,讓程式設計師可以專注於語言邏輯本身。
除了結合 C/C++ 與 JAVA 的優點外, C# 也支援許多物件導向型別,使用戶端程式碼可以更容易使用,一直到今天,微軟仍在為 C# 推出更多新的特性。

C# 與 .NET 有什麼關聯呢?

C# 是一個程式語言, .NET 則是平台框架,目前有 Windows 平台專屬的 .NET Framework 與跨平台的 .NET Core 兩種,其中包含了 CLR 與大量的類別庫。
※ .NET Core 是微軟新任執行長 Satya Nadella 上任後,使微軟轉為擁抱開源社群後誕生的開源跨平台框架,目前 .NET Core 有許多功能還不及原本的 .NET Framework,但隨著版本不斷的更新,兩者的差距漸漸在縮小當中。

在 C# 撰寫完成後, C# 的編譯器會將其編譯為符合 CLI 規格的中繼語言,也就是常見的 .exe 、 .dll 等資料,執行應用程式時,這些中繼資料則會再繼續透過 CLR 結合使用到的類別庫轉換為機器語言。

這樣寫看起來很複雜,我們將其簡化為條列式,並搭配一張微軟的 .NET 結構圖一起服用,讓思路更清晰。

  • C# 是一個程式語言,會將資料編譯為中繼語言( IL)
  • .NET 是一個框架,為 .NET Framework 的簡稱,由下面兩個部分組成:
    • CLR(Common Language Runtime):C# 記憶體回收、即時編譯(Just-In-Time) 等功能都靠它
    • 類別庫(Class Library):在開發 C# 時用到的許多類別都會在這進行調用

.NET Architecture

心得

以前在摸索程式語言的時候,總是會優先去理解寫法與邏輯處理等實作,而疏忽於理解它的架構與執行方式,知道 C# 、知道 .NET ,但兩者的關係總是不能好好的釐清,在理解他們之間的關聯性之後,才終於對 C# 比較理解了。

如果想對 C# 與 .NET Framework 有更深入的認識,也不妨看看參考資料的兩篇文章,都能更深入的理解兩者之間的關聯性喔。

參考資料

C# 語言和 .NET Framework 簡介
釐清 CLR、.NET、C#、Visual Studio、ASP.NET 各版本之間的關係


下一篇
Day02 - 建立第一支應用程式 Hello C#
系列文
從零開始的C#新手筆記4

尚未有邦友留言

立即登入留言