.NET掃盲帖

來源:互聯網
上載者:User

學了那麼久C#,.NET,一直很盲,知道最近才瞭解到什麼是.NET,什麼是C#,CLR,JIT,IL等。分享出來,希望能協助同學們理解.NET。

(水平有限,還望多指點哈哈)

概念介紹

什麼是.NET?

.NET Framework(.NET Framework) 是由微軟開發,一個致力于敏捷軟體開發(Agile software development)、快速應用開發(Rapid application development)、平台無關性和網路透明化的軟體開發平台(引自wikipedia)。

.NET並非一門語言,狹義理解可以是運行一個語言的架構,.NET以CLR(Common Language Runtime,通用語言運行庫)為基礎。它支援C#,VB,C++等語言,或者這句話讓人會誤解,事實上CLR不直接運行這些語言,而是運行由這些語言產生的中繼語言IL(後面介紹)。

什麼是CLR?

CLR(Common Language Runtime,通用語言運行庫)是.NET平台的核心,與JAVA的JVM類似功能,也有人將CLR成為.NET的虛擬機器,正如前面所說,CLR是一個運行時環境,負責.NET運行時進程線程管理,資源管理和,類型封裝等。

JIT:即時編譯,在運行是把IL代碼編譯成能在本機直接執行的指令集。

通俗地講:CLR是IL的運行環境,JIT是IL的編譯器,CLR和IL是影響.NET程式執行效率的主要因素。

什麼是IL?

中繼語言(Intermediate Language),可以理解成.NET平台的彙編,支援物件導向特性。下面我們看下HelloWorld

using System;namespace HelloWorld{    class Program    {        static void Main(string[] args)        {            Console.Write("HelloWorld!");        }    }}

產生一下,並開啟IL反組譯碼器反組譯碼HelloWorld程式

雙擊Main方法可查看IL指令集

.method private hidebysig static void  Main(string[] args) cil managed{  .entrypoint  // 代碼大小       13 (0xd)  .maxstack  8  IL_0000:  nop  IL_0001:  ldstr      "HelloWorld!"  IL_0006:  call       void [mscorlib]System.Console::Write(string)  IL_000b:  nop  IL_000c:  ret} // end of method Program::Main

這就是CLR所能啟動並執行指令。相當於C語言要運行必須先把C代碼編譯成彙編指令,再由機器運行。學習IL有助於深入理解.NET,CLR。

什麼是C#?

物件導向進階程式設計語言,這個應該不陌生。但C#不等於.NET,C#只是.NET平台上被最廣泛採用的程式設計語言。除了C#,你還可以用VB,C++,F#等作為開發語言,這些語言都會被編譯成IL代碼執行於CLR,如果你懂編譯原理,你甚至可以將JAVA應用到.NET,也可以設定你自己的語言,你所需要做的只是把你設定的語言的代碼編譯轉換成可執行檔IL指令集。

 

圖解.NET

在.NET平台上你所寫的代碼是這樣最終被執行的。理解這幅圖,重新去看上面概念介紹或者更簡單吧。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.