C# 編譯器
C#編譯器可以定義為一個內建元件,用於將C#程式碼轉換為機器可讀的語言程式碼,並以.dll檔案或.exe檔的形式傳回輸出檔。 C#有兩種不同類型的編譯方法,即公共語言執行時期編譯(CLR)和即時編譯(JIT)。 JIT編譯器進一步分為Pre JIT編譯器、Normal JIT編譯器和Econo JIT編譯器。用於此編譯目的的一些常用工具包括 C# 編譯器 2.0、C# 編譯器 3.5、C# 編譯器 4.x、Roslyn 和 Mono 編譯器。
因此,在產生中間語言之後,我們需要將此 IL 轉換為機器碼,因為處理器只能理解機器碼。 所以我們使用CLR(公共語言執行時期)來進行此轉換。 CLR是一種在電腦上執行的程序,借助Just-In-Time(通常稱為JIT)將IL代碼轉換為機器碼。當我們雙擊 .exe 檔案時,會呼叫 JIT 編譯器並在該時間編譯 IL 程式碼,因此它被命名為 JUST-IN-TIME(JIT)。
編譯可以隱式或明確完成。隱式編譯是兩次編譯,先編譯IS,再編譯成機器語言。這個過程稱為 JIT 編譯或 JUST-In-Time 編譯。 JIT支援多平台,加快程式碼的執行速度。
即時編譯器的型別
有三種不同的即時編譯器
1。預 JIT 編譯器
在這個編譯器中,只有一個編譯過程,因為整個原始碼被編譯為本機程式碼。
2。普通 JIT 編譯器
在這個編譯器中,只有那些方法被編譯成機器碼,這是運行時需要的。編譯器編譯這些方法,將它們儲存在快取中,並再次使用相同的方法。
3。 Econo JIT 編譯器
在此編譯器中,只有那些方法被編譯為運行時所需的機器碼,但是如果不需要,這些方法將被刪除。在 JIT 中,運行時只編譯所需的方法,因此需要較少的記憶體使用。
上圖
編譯時會執行1-3步驟
運行時將執行 3-5 個步驟。
所以,當我們運行時會出現這兩類錯誤。
運行時錯誤和編譯器錯誤
- 編譯器錯誤:此類錯誤發生在 C# 編譯器本身。它阻止 C# 程式碼編譯為 .exe 格式。這些錯誤基本上是由於語法錯誤而發生的,當我們拼寫錯誤任何語法或錯過逗號或分號時,編譯器無法理解這一點,因此它會停止處理並拋出編譯時錯誤。我們可以在IDE的輸出視窗中看到這些錯誤。因此,透過檢查這些錯誤,我們可以修正我們的程式碼。
- 運行時錯誤: 這些是即時錯誤。當程式碼編譯成功但在執行時遇到任何問題時,就會發生這些情況。這會影響程式碼的行為。例如,我們可以說,當我們嘗試將任何數字除以零時,就會發生運行時錯誤。這些錯誤比編譯器錯誤更繁瑣,因為在這種情況下,我們需要修正程式碼的行為。
C# 編譯器類型
早期的微軟編譯器被命名為.Net Framework,如C#編譯器2.0、C#編譯器3.5、C#編譯器4.x等。這些編譯器不是用C#寫的,或者我們可以說C#不是由C#編譯的。此後出現的其他編譯器是:
1.羅斯林
早期編譯器是用 C/C++ 寫的。 Roslyn 是一個開源 .Net 編譯器,其中 C++ 程式碼被取代。它會取得程式碼中元素的類型以及它們之間的關係。由於 C# 和 VB 團隊編寫了編譯器,因此 Visual Studio 範本適用於兩者。它允許我們編寫解析原始檔案的程式碼,並且我們可以輕鬆修改原始程式碼。以下是Roslyn的四個API層
- 腳本 API:該層提供運行時執行上下文,允許我們使用 C# 作為腳本語言,並且不依賴 Visual Studio 元件。
- 編譯器 API:此層用於語法,包含對組件和原始碼檔案的引用。該層也不依賴 Visual Studio 元件。
- Service API:此層在 SDK 之上提供 IntelliSense、格式化、尋找所有參考等。它還有助於管理有關專案的資訊並管理專案依賴性。
- Workspace API:這一層主要用於透過IDE進行程式碼分析和重構。 Roslyn 讓程式碼變得更容易,由一組 API(如編譯器和服務)組成,提供格式化、Intellisense 等許多功能。它提供對多種語言的支援。工作區 API 提供有關原始程式碼的深入資訊。
2.單聲道編譯器
基於 C# ECMA 標準的 Mono C# 編譯器。它有多個版本,框架有 C# 1.0、2.0、3.0、4.0。 mono編譯器mcs針對framework 1.1,gmcs針對framework 2.0,而smcs和dmcs分別針對framework 2.1和4.0。
- mcs: 它支援所有 C# 1.1 功能,如匿名方法、可空型別、固定緩衝區、屬性存取修飾符、靜態類別等。
- gmcs:它支援 C# 2.0 功能,如查詢表達式、物件初始值設定項、部分方法、lambda 表達式、自動實現的屬性等
- dmcs:它支援 C# 4.0 功能,包括命名參數、泛型型別差異、動態綁定等
其他編譯器,如 RemObjects C# 編譯器,根據 EMCA 規範遵循 C# 標準,除此之外還有實作 C# 和 .Net 的 GNU C# 編譯器。
結論
C# 編譯器就像其他編譯器一樣,將程式碼編譯為機器碼,以便處理器能夠理解該過程。
以上是C# 編譯器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。
