農民工兄弟學C 5 轉

2022-02-28 05:17:57 字數 1259 閱讀 7196

書接上回

吃一頓飯有兩種方法

1,去快餐館買現成,服務生端上來的就是做好的菜

2,去超市買一些已經收拾好的半成品和成套的配料,買回家讓老婆來燒。

這兩種方式各有各的好處。

傳統的非託管應用程式就象在餐館裡點菜,端上來就可以吃。我們部署的程式就是最終的二進位制機器**.

優點不必說了,缺點不少,很有可能做好的菜不適合顧客的口味,同樣的一道菜,你賣給乙個四川人他會覺得辣子放少了,但你賣給乙個河北人就會辣死他,傳統的非託管程式在部署時會遇到很多的問題,你不能保證你的程式在客戶的平台上能順利的執行,因為客戶的軟硬體會有著千差萬別,單一的一套最終機器**無法保證在所有的平台上執行。

另外如果乙個程式是由許多模組組成的那麼這些模組之間的通訊必須是通過機器**的二進位制資訊來進行,這會帶來很大的程式設計難度,並會使得程式和穩定性很難得到保障。

在非託管應用程式中可執行檔案(exe)和動態鏈結庫(dll)中包含的是原生的機器**。

c#程式或者說託管應用程式是如何執行的呢,c#程式執行有點象在家裡自已燒菜,首先各種源料在工廠中被加工為半成品,但這些半成品是不能立即被食用的(當然你非要吃生肉,也沒有人管你),回家以後讓老婆把這些半成品進鍋炒一下就行了。

c#源**首先被c#編譯器(csc)編譯(其實是偽編譯)成一種中間語言**(msil),這就是那個半成品,這也是我們部署的部分,在客戶的機器上這些半成品(msil)將被乙個叫做jit的編譯器再一次被編譯並執行,在託管應用程式中的可執行檔案(exe)包含的是啟動專案生成的中間語言**(msil),而動態鏈結庫(dll)中包含的是類庫專案生成的msil,乙個啟動專案可以引用其它類庫專案生成的類庫(有點繞口)也可以引用系統中安裝的類庫(現在還和using沒有任何關係噢),在啟動專案中有乙個引用項,我們可從中看到該專案中引用的類庫,並且我們可以在專案上右擊滑鼠-新增引用,當我們把exe和dll部署到客戶的機器上時其實只是部署了一堆msil,在第一次執行時jit(其實她就是老婆)裝會把exe和dll中的中間**簡單的組裝,並且編譯,然後執行,所以exe和dll之間是無縫組合的,它們之間通訊是通過msil進行的,這樣程式執行會更穩定,並且開發維護會更容易.當然效率會有一定的損失.

託管程式的執行效率主要取決於三方面,一方面就是程式設計師寫的源**質量,一方面就是csc,一方面就是jit,所以要吃上好菜就要去超市買好的半成品,並且要有乙個好的老婆.

或者直接去餐館,但餐館裡的飯菜總沒有老婆燒的菜好吃,因為餐館裡的飯菜裡邊沒有感情,而老婆燒的菜裡注入了濃濃的愛(從大長今中受到的啟發),即使有的時候鹽放多了,那也要比在外邊吃強一萬倍,除非你是乙個有房子的無家可歸者.

本文首發於 

農民工兄弟學C 4 轉

今天說說c 程式的通用結構 1,首先寫乙個c 語言的最小的程式,這個程式在也許你在其它書上從來沒有見過,新建乙個控制台應用程式把program.cs中的自動生成的所有內容全部刪除 ctrl a,del 然後輸入以後下邊的程式 class program ctrl f5 執行一下 現在大家明白了吧,在...

農民工兄弟學C 3 轉

類是 c 中功能最為強大的資料型別。像結構一樣,類也定義了資料型別的資料和行為。然後,程式設計師可以建立作為此類的例項的物件。與結構不同,類支援繼承,而繼承是物件導向程式設計的基礎部分。抄自中文msdn太高深了,類就是一張工程圖,上邊畫好造房子所需的磚頭,水泥,砂子,和這些東西之間如何接合,當然光有...

農民工兄弟學習C 2 轉

兒子睡著了,老婆在洗衣服,老媽在看電視,我在學習c 大家還記得我嗎?我就是那個學習c 的農民工兄弟,今天我弄懂了值型別,1,變數,這個不用說上初中的時候老師講過,是在代數課上,就是能變的量,現在還記得那個有點高血壓,頭髮花白的女老師,前一段時間回老家還見到她老人家,沒有太大變化還是那樣,雖然過了十多...