用Visual Studio等IDE寫C#的Hello World非常簡單,但脫離了IDE你能不能打印出Hello World呢?這不是說工作時脫離IDE,而是學習一下CLR的執行模型.
Hello World
1、新建一個記事本,輸入如下程式碼,另存為HelloWorld.txt。
using System; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.ReadKey(); } } }
2、開啟Visual Studio 2008(2005,2010) 命令提示程式
# 3、切換到HelloWorld.txt的目錄
#
# 4、執行指令:csc /out:Hello.exe HelloWorld.txt
#
# 如無意外,將會編譯出Hello.exe,能列印出Hello World。
CLR執行模型-編譯期
# CLR程式的執行過程大致分為兩步,編譯期與運行期,編譯期過程大致如下圖:
# 其中編譯期邏輯上也可分為兩步驟:
# 1、CLR(C#)編譯器接受原始碼文件,並編譯為託管模組。託管模組包括IL程式碼、元資料、CLR頭等組成部分。上面的範例中就是將HelloWorld.txt編譯成託管模組。
2、一般程序集都會包含很多原始碼文件(這裡只有HelloWorld.txt)和資源文件,第二步就是把各個原始碼文件和資源文件對應編譯結果合併成組件。
執行上面兩步驟就可以得到一個XX.dll或XX.exe的組件,就像上面的Hello.exe。
編譯器如何知道要編譯成託管模組還是資源檔?其實是必須明確告訴編譯器每個檔案的怎麼編譯,這個對應Visual Studio的檔案屬性的生成操作.
右鍵點選任何Visual Studio解決資源方案的檔案-->屬性-->產生操作:
# 指定Class1為嵌入的資源,用ILSpy查看會發現只是把Class1嵌入到程式集中,名稱為:命名空間.檔案名稱:
# 你甚至可以將一張圖片設為編譯讓編譯器試圖去編譯它,不過會報錯。
運行期
上面產生了程式集,程式集內的是IL程式碼,它還不是可執行的程式碼。 IL是與CPU無關的機器語言,直到組件被調用,才會由JIT(Just-in-Time,實時)編譯器編譯為本機碼(CPU指令)。在運行時,CLR執行以下步驟:
# 1、檢查組件的安全特性;
2、在記憶體中分配空間;
3、把程式集中的可執行程式碼傳送給JIT編譯器,把其中一部分編譯成本機碼(CPU指令)。
程式集的可執行程式碼在需要的時候由JIT編譯器編譯,然後本機程式碼(CPU指令)就被快取以備後來的程式中執行。一旦應用程式終止,編譯好的本機程式碼也會被丟棄。
例如如果將上面的程式碼改為:
static void Main(string[] args) { Console.WriteLine("Hello"); Console.WriteLine("World!"); Console.ReadKey(); }
第一個WriteLine需要先JIT編譯,再執行。而由於已編譯WriteLine的程式碼,所以第二個WriteLine會直接執行記憶體區塊中的程式碼,跳過JIT編譯。
由於分配記憶體、JIT編譯過程等,所以程式會在第一次運行時造成一些效能損失,寫ASP.NET時這種感覺特變明顯,按了F5會等很久才會顯示首頁。
下面模擬感受這個過程。用一大堆類別延長記憶體分配的時間,參考這個檔案HelloWorld.cs:
#
# 再次執行指令:csc /out:Hello.exe HelloWorld.txt,得到Hello.exe,執行時發現有一定的延遲才會列印出Hello World。
生成本機代碼
# 使用.NET提供的NGen.exe,可以將IL程式碼編譯成本機程式碼,可以解決上面的問題。 NGen.exe有兩個作用:
1、加快應用程式的啟動速度。因為程式碼已編譯為本機程式碼,運行時不需要再花時間編譯。
2、減少應用程式的組件。如果一個程式集會同時載入多個進程,NGen.exe會將IL編譯成本機程式碼,並儲存到一個單獨的檔案中。這樣就可以透過"記憶體映射"的方式,同時映射到多個進程中,使程式碼共享,避免每個進程一份程式碼。
再次執行 Visual Studio 2008(2005,2010) 命令提示程式
執行以下指令:ngen install Hello.exe:
# 指令完成(在我的機器大概要10秒左右,到能再次輸入指令才完成)後,執行Hello.exe會發現馬上就能列印出Hello World,沒有任何延遲。
以上是不用IDE也能寫出C#的Hello World詳解(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

IDLE(集成开发学习环境Integrated Development and Learning Environment)是一个 Python IDE,由 Python 语言本身编写,在 Windows 中通常作为 Python 安装 的一部分而安装。它是初学者的理想选择,使用起来很简单。对于那些正在学习 Python 的人,比如学生,它可以作为一个很好的 IDE 来开始使用。语法高亮、智能识别和自动补全等基本功能是这个 IDE 的一些特点。你可以随时在官方 文档 中了

C++是一种广泛使用的面向对象的计算机编程语言,它支持您与之交互的大多数应用程序和网站。你需要编译器和集成开发环境来开发C++应用程序,既然你在这里,我猜你正在寻找一个。我们将在本文中介绍一些适用于Windows11的C++编译器的主要推荐。许多审查的编译器将主要用于C++,但也有许多通用编译器您可能想尝试。MinGW可以在Windows11上运行吗?在本文中,我们没有将MinGW作为独立编译器进行讨论,但如果讨论了某些IDE中的功能,并且是DevC++编译器的首选

ide全称“Integrated Development Environment”,中文意思为“集成开发环境”,是用于提供程序开发环境的应用程序,是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。

Python非常易学,强大的编程语言。Python包括高效高级的数据结构,提供简单且高效的面向对象编程。Python的学习过程少不了IDE或者代码编辑器,或者集成的开发编辑器(IDE)。这些Python开发工具帮助开发者加快使用Python开发的速度,提高效率。高效的代码编辑器或者IDE应该会提供插件,工具等能帮助开发者高效开发的特性。1.VimVim可以说是Python最好的IDE。Vim是高级文本编辑器,旨在提供实际的Unix编辑器‘Vi’功能,支持更多更完善的特

开发php的中文ide有PHPStorm、Zend Studio、Sublime Text、Visual Studio Code、NetBeans等。详细介绍:1、PHPStorm,提供了强大的代码编辑器、代码自动完成、调试工具和版本控制系统集成;2、Zend Studio,支持许多流行的PHP框架,并提供了丰富的代码导航和重构功能;3、Sublime Text等等。

作为一名专业的Go开发者,选择合适的软件工具是至关重要的。在日常开发中,拥有高效、稳定且功能强大的软件可以极大提升我们的工作效率。下面将为大家推荐五款顶级软件,每款软件都附有具体的代码示例,希望能够对您有所帮助。1.VisualStudioCodeVisualStudioCode(简称VSCode)是一款由微软推出的轻量级现代化代码编辑器,支持G

ide是“电子集成驱动器”,其英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,或者叫“集成设备电路”;它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器;ide是一种磁盘驱动器接口类型,硬盘和光驱通过IDE接口与主板连接;控制器电路就驻留在驱动器中,不再需要单独的适配器卡。

Golang开发环境选择指南:最佳IDE推荐一、引言随着Golang的不断发展,越来越多的开发者开始加入这个快速增长的社区。在选择Golang开发环境时,一个有效且高效的IDE(IntegratedDevelopmentEnvironment)是至关重要的。IDE不仅可以提供代码编辑、编译和调试的功能,还能提升开发者的工作效率。本文将介绍几种受欢迎的Go


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

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

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