中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

C# 4動(dòng)態(tài)編程新特性與DLR剖析

近幾年來,在TIOBE 公司每個(gè)月發(fā)布的編程語言排行榜[1] 中,C# 總是能擠進(jìn)前10 名,而在近10 年的編程語言排行榜中,C# 總體上呈現(xiàn)上升的趨勢。C# 能取得這樣的成績,有很多因素在起作用,其中,它在語言特性上的銳意進(jìn)取讓人印象深刻( 圖1 )。

  圖1 C#各版本的創(chuàng)新點(diǎn)

2010 年發(fā)布的 C# 4 ,最大的創(chuàng)新點(diǎn)是擁有了動(dòng)態(tài)編程語言的特性。

1 動(dòng)態(tài)編程語言的中興

動(dòng)態(tài)編程語言并非什么新鮮事物,早在面向?qū)ο缶幊陶Z言成為主流之前,人們就已經(jīng)使用動(dòng)態(tài)編程語言來開發(fā)了。即使在 Java 、 C# 、 C++ 等面向?qū)ο缶幊陶Z言繁榮興旺、大行于世的年代,動(dòng)態(tài)編程語言也在“悄悄”地攻城掠地,占據(jù)了相當(dāng)?shù)拈_發(fā)領(lǐng)域,比如 JavaScript 業(yè)已成為 Web 客戶端事實(shí)上的主流語言。

最近這幾 年,動(dòng)態(tài)編程語言變得日益流行,比如 Python 、 Ruby 都非常活躍,使用者眾多。

這里有一個(gè)問題,為什么我們需要在開發(fā)中應(yīng)用動(dòng)態(tài)編程語言?與 C# 和 Java 這類已經(jīng)非常成熟且功能強(qiáng)大的靜態(tài)類型編程語言相比,動(dòng)態(tài)編程語言有何優(yōu)勢?

簡單地說,使用動(dòng)態(tài)編程語言開發(fā)擁有以下的特性:

(1 )支持REPL ( Read-evaluate-print Loop :“讀入 à 執(zhí)行 à 輸出”循環(huán)迭代)的開發(fā)模式,整個(gè)過程簡潔明了,直指問題的核心。

舉個(gè)簡單的例子, 圖 2 所示為使用 IronPython[2] 編程計(jì)算“ 1+2+ …… +100 ”的屏幕截圖,我們可以快速地輸入一段完成累加求和的代碼,然后馬上就可以看到結(jié)果:

2 使用 IronPython編程

如果使用 C# 開發(fā)就麻煩多了,您得先用 Visual Studio 創(chuàng)建一個(gè)項(xiàng)目,然后向其中添加一個(gè)類,在類中寫一個(gè)方法完成求和的功能,再編寫調(diào)用這一方法的代碼,編譯、排錯(cuò),最后才能得到所需的結(jié)果……

很明顯,對于那些短小的工作任務(wù)而言,動(dòng)態(tài)編程語言所具備的這種 REPL 開發(fā)模式具有很大的吸引力。

( 2 )擴(kuò)展方便。用戶可以隨時(shí)對代碼進(jìn)行調(diào)整,需要什么功能直接往動(dòng)態(tài)對象上“加”就是了,不要時(shí)又可以移除它們。而且這種修改可以馬上生效,并不需要像 C# 那樣必須先修改類型的定義和聲明,編譯之后新方法才可用。

換句話說:使用動(dòng)態(tài)語言編程,不需要“重量級”的 OOAD ,整個(gè)開發(fā)過程迭代迅速而從不拖泥帶水

( 3 )動(dòng)態(tài)編程語言的類型解析是在運(yùn)行時(shí)完成的,可以省去許多不必要的類型轉(zhuǎn)換代碼,因此,與靜態(tài)編程語相比,動(dòng)態(tài)編程語言寫的代碼往往更緊湊,量更少。

動(dòng)態(tài)編程語言主要的弱點(diǎn)有兩個(gè):

( 1 )代碼中的許多錯(cuò)誤要等到運(yùn)行時(shí)才能發(fā)現(xiàn),而且需要特定的運(yùn)行環(huán)境支持,對其進(jìn)行測試不太方便,也不支持許多用于提升代碼質(zhì)量的各種軟件工程工具,因此不太適合于開發(fā)規(guī)模較大的、包容復(fù)雜處理邏輯的應(yīng)用系統(tǒng)。

( 2 )與靜態(tài)編程語言相比,動(dòng)態(tài)編程語言編寫的程序性能較低。不過隨著計(jì)算機(jī)軟硬件技術(shù)的不斷進(jìn)步,比如多核 CPU 的廣泛應(yīng)用,動(dòng)態(tài)編程語言引擎和運(yùn)行環(huán)境不斷地優(yōu)化,動(dòng)態(tài)編程語言編寫的程序性能在不斷地提升,在特定的應(yīng)用場景下,甚至可以逼近靜態(tài)語言編寫的程序。

2 擁抱“動(dòng)態(tài)編程”特性的 C# 4

為了讓 C# 、 Visual Basic 等 .NET 編程語言能具備動(dòng)態(tài)編程語言的特性, .NET 4.0 引入了一個(gè)“ DLR ( Dynamic Language Runtime :動(dòng)態(tài)語言運(yùn)行時(shí)) ”( 圖 3 )。

圖 3 DLR:動(dòng)態(tài)語言運(yùn)行時(shí)

         DLR 運(yùn)行于 CLR 之上,提供了一個(gè)動(dòng)態(tài)語言的運(yùn)行環(huán)境,從而允許 Python 、 Ruby 等動(dòng)態(tài)語言編寫的程序在 .NET 平臺上運(yùn)行,同時(shí),現(xiàn)有的 .NET 靜態(tài)類型編程語言,比如 C# 和 Visual Basic ,也可以利用 DLR 而擁有一些動(dòng)態(tài)編程語言的特性。

( 1 )使用 C# 4 編寫動(dòng)態(tài)的代碼

C# 4 新增了一個(gè) dynamic 關(guān)鍵字,可以用它來編寫“動(dòng)態(tài)”的代碼。

例如,以下代碼創(chuàng)建了一個(gè) ExpandoObject 對象(注意必須定義為 dynamic ):

dynamic dynamicObj = new ExpandoObject();        
        

NET技術(shù)C# 4動(dòng)態(tài)編程新特性與DLR剖析,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产成人精品一区二区三区四区 | 99re在线视频观看 | 伊人久久大香线 | 久久性色| 亚洲国产精品激情在线观看 | www.888www看片| 999观看免费高清www | 成人影院免费视频 | 精品国产欧美一区二区三区成人 | 精品一区在线 | 色婷婷精品 | 伊人热久久 | 精品久久一区 | 亚洲第一天堂 | 青青草华人在线视频 | 中文字幕 欧美 日韩 | 亚洲人久久 | 欧美一区二区三区视频 | www.午夜 | 成人美女免费网站视频 | 国产一区二区在线免费观看 | 日韩午夜在线播放 | 狠狠综合久久av一区二区老牛 | 精品乱码一区二区三四区视频 | 中文在线观看视频 | 一区二区三区视频在线观看 | 精品国产乱码一区二区三区 | 欧美日韩国产精品激情在线播放 | 九一在线 | 精国产品一区二区三区四季综 | 羞羞视频在线网站观看 | 激情久久网 | 欧美一级在线观看 | 毛片一级电影 | 黄 色 毛片免费 | 国产亚洲www | 日韩成人在线播放 | 亚洲精品日韩在线 | 欧美一级黄色片免费观看 | 成人久久18免费网站 | 国产精品无码永久免费888 |