搜尋
首頁後端開發C#.Net教程不用IDE也能寫出C#的Hello World詳解(圖)

用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) 命令提示程式

不用IDE也能寫出C#的Hello World詳解(圖)

#   3、切換到HelloWorld.txt的目錄

# 不用IDE也能寫出C#的Hello World詳解(圖)

#   4、執行指令:csc /out:Hello.exe HelloWorld.txt

# 不用IDE也能寫出C#的Hello World詳解(圖)

#   如無意外,將會編譯出Hello.exe,能列印出Hello World。

 CLR執行模型-編譯期

#   CLR程式的執行過程大致分為兩步,編譯期與運行期,編譯期過程大致如下圖:

不用IDE也能寫出C#的Hello World詳解(圖)

#   其中編譯期邏輯上也可分為兩步驟:

#   1、CLR(C#)編譯器接受原始碼文件,並編譯為託管模組。託管模組包括IL程式碼、元資料、CLR頭等組成部分。上面的範例中就是將HelloWorld.txt編譯成託管模組。

  2、一般程序集都會包含很多原始碼文件(這裡只有HelloWorld.txt)和資源文件,第二步就是把各個原始碼文件和資源文件對應編譯結果合併成組件。

  執行上面兩步驟就可以得到一個XX.dll或XX.exe的組件,就像上面的Hello.exe。

  編譯器如何知道要編譯成託管模組還是資源檔?其實是必須明確告訴編譯器每個檔案的怎麼編譯,這個對應Visual Studio的檔案屬性的生成操作.

  右鍵點選任何Visual Studio解決資源方案的檔案-->屬性-->產生操作:

不用IDE也能寫出C#的Hello World詳解(圖)

#   指定Class1為嵌入的資源,用ILSpy查看會發現只是把Class1嵌入到程式集中,名稱為:命名空間.檔案名稱:

不用IDE也能寫出C#的Hello World詳解(圖)

#   你甚至可以將一張圖片設為編譯讓編譯器試圖去編譯它,不過會報錯。

 運行期

  上面產生了程式集,程式集內的是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:

# 不用IDE也能寫出C#的Hello World詳解(圖)

#   再次執行指令: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:

不用IDE也能寫出C#的Hello World詳解(圖)   

#   指令完成(在我的機器大概要10秒左右,到能再次輸入指令才完成)後,執行Hello.exe會發現馬上就能列印出Hello World,沒有任何延遲。

以上是不用IDE也能寫出C#的Hello World詳解(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何在 Ubuntu 和其他 Linux 下安装 IDLE Python IDE如何在 Ubuntu 和其他 Linux 下安装 IDLE Python IDEApr 08, 2023 pm 10:21 PM

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

Windows 11 系统下的五款最佳免费 C++ 编译器推荐Windows 11 系统下的五款最佳免费 C++ 编译器推荐Apr 23, 2023 am 08:52 AM

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

ide是什么意思ide是什么意思Mar 18, 2021 pm 03:37 PM

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

强烈推荐十个 Python IDE 和代码编辑器!强烈推荐十个 Python IDE 和代码编辑器!Apr 19, 2023 pm 07:04 PM

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

开发php有哪些中文ide开发php有哪些中文ideAug 17, 2023 pm 01:23 PM

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

专业Go开发者必备:五款顶级软件推荐专业Go开发者必备:五款顶级软件推荐Mar 15, 2024 am 11:48 AM

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

ide是什么ide是什么Jan 31, 2023 am 11:23 AM

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

选择Golang开发环境:推荐的最佳IDE选择指南选择Golang开发环境:推荐的最佳IDE选择指南Jan 16, 2024 am 10:53 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MantisBT

MantisBT

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

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

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

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