版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 08 屆本科畢業(yè)設(shè)計(論文)外文</p><p><b> 文獻(xiàn)翻譯</b></p><p> 學(xué) 院: 計算機(jī)科學(xué)與工程學(xué)院 </p><p> 專 業(yè): 網(wǎng)絡(luò)工程 </p><p> 姓 名: XX
2、 XX </p><p> 學(xué) 號: 090208205 </p><p> 外文出處: Programming C# 4.0 </p><p> 附 件: 1.外文資料翻譯譯文;2.外文原文。</p><p> 附件1:外文
3、資料翻譯譯文</p><p><b> C#編程4.0</b></p><p><b> 介紹C#</b></p><p> C#,讀作“see sharp”——是專門為.NET平臺設(shè)計的編程語言。從2002年首次發(fā)布以來,C#創(chuàng)建了許多角色。它廣泛的應(yīng)用于網(wǎng)站服務(wù)器端以及windows桌面應(yīng)用程序的客戶端和服務(wù)器上
4、。你可以用C#編寫智能手機(jī)的用戶界面和Xbox 360游戲。最近,微軟的Sliverlight平臺使得可以用C#編寫可以在網(wǎng)頁瀏覽器上運行的Internet應(yīng)用程序。</p><p> 但是什么樣的語言是C#?為了很好的了解一種語言并且有效的應(yīng)用,僅僅專注于細(xì)節(jié)和機(jī)制是不夠的,雖然在這本書中我們也將花費大量的時間來了解這些東西,但是同樣重要的是了解這些細(xì)節(jié)之后的東西。因此,在本章中,我們將要了解C#建立一個什么
5、樣的問題解決機(jī)制。因此,我們將探討這種語言的風(fēng)格,并且通過各個方面來區(qū)別C#與其他語言。并且我們將在了解C#的最新演變——第四個版本,中結(jié)束此章節(jié)。</p><p> 為什么是C#?為什么是.NET?</p><p> 編程語言的存在,可以讓開發(fā)人員的開發(fā)工作更加的有效率。許多成功的編程語言都簡化或者自動化了以前要靠繁瑣的步驟才能完成的任務(wù)。有些提供新技術(shù),使得老問題可以比以前更加有效
6、或者在更大的規(guī)模上得到解決。當(dāng)然,C#可以給你帶來多大的差異取決于你的編程背景,所以這值得考慮,語言設(shè)計人員在開發(fā)C#的時候考慮了哪些種類的人。</p><p> C#是針對windows平臺上的開發(fā)的,并且其語法跟使用C、C++或者其他編程語言的編程人員的編程傳統(tǒng)相似,如JavaScript和Java繪制?;菊Z言元素如語句、表達(dá)式、函數(shù)聲明和流量控制,盡量與C家族語言接近。</p><p
7、> 當(dāng)然,一個熟悉的語法這個理由并不足夠來選擇一個語法,所以C#提供了一個生產(chǎn)增強(qiáng)特性,這個特性在它之前的語言中并沒有。垃圾回收機(jī)制把開發(fā)人員從常見的內(nèi)存管理問題的暴政中解救出來,如內(nèi)存泄漏和循環(huán)引用。編譯代碼可驗證類型安全機(jī)制規(guī)則了廣泛的錯誤和潛在的安全漏洞。但是C或C++的windows開發(fā)人員可能不習(xí)慣這些功能,他們覺得這是Java淘汰下來的舊帽子,但是無論在對象模型,XML或者數(shù)據(jù)庫中,Java都沒有任何東西能夠媲美C#
8、為搜集信息工作所提供的“LINQ”功能。即使用其他語言編寫,從外部原件集成代碼也是非常痛苦的。C#中還采用了功能編程的支持,這是以前學(xué)術(shù)語言中的一個非常強(qiáng)大的功能。</p><p> C#開發(fā)人員中使用的大多數(shù)有用的功能,許多都來自于.NET框架,它為C#提供運行環(huán)境、C#庫以及所有其他.NET語言,就像VB.NET。C#是為.NET設(shè)計的,他們之間關(guān)系如此密切的一個主要好處是與框架功能的合作,就像類庫一樣感覺
9、很自然。</p><p> .NET Framwork 類庫</p><p> 在C#中工作是指比語言用到的更多——.NET Framwork提供的類是開發(fā)人員日常經(jīng)驗(他們占了這本書很大一部分內(nèi)容)的一個極其重要的組成部分。大多數(shù)的庫的功能分為一下三類:編寫實用的功能、.NET包裝windows功能和框架。</p><p> 第一組包括的實用工具如字典、列表
10、和其他集合類,以及字符串處理工具如正規(guī)表達(dá)引擎。也有一些處理稍大規(guī)模的功能,例如對象模型,代表XML文檔。</p><p> 一些類的功能的特點是圍繞底層的OS的包裝,例如有用于訪問文件系統(tǒng)的類,并使用網(wǎng)絡(luò)功能如接口。也有書面向控制臺輸出的類,我們可以用在任何書上都可以看到的第一個例子說明,如示例1-1所示。</p><p> 示例1-1。“Hello,world”示例</p&g
11、t;<p> class Program</p><p><b> {</b></p><p> static void Main(){</p><p> System.Console.WriteLine("Hello, world");</p><p><b> }
12、</b></p><p><b> }</b></p><p> 我們將在適當(dāng)?shù)臅r候檢查所有組件,但現(xiàn)在,即使是這個最簡單的例子也需要調(diào)用庫中的類(這個例子中的System.Console類)來做這個工作。</p><p> 最后,類庫提供整個框架以支持建設(shè)的某些種類應(yīng)用。例如Windows Presentation Foun
13、dation (WPF)是建立windows桌面軟件的框架;ASP.NET(這不是一個縮寫,盡管出現(xiàn))是一種用于構(gòu)建WEB應(yīng)用程序的框架。并不是所有框架都是關(guān)于用戶界面的,例如Windows Communication Foundation (WCF)是專為在網(wǎng)絡(luò)上訪問其他計算機(jī)系統(tǒng)建立服務(wù)而設(shè)計的。</p><p> 這三類劃分并不嚴(yán)格,不少類適合一分為二。例如,類庫提供訪問文件系統(tǒng)的部分不只是薄的包裝圍繞現(xiàn)
14、有的Win32 API。他們添加新的面向?qū)ο蟮某橄?,提供超出了基本的文件I / O服務(wù)的重要功能,所以這些類型的融入第一類和第二類。同樣,框架通常需要整合與相關(guān)服務(wù)為例,雖然在一定程度上的Windows窗體UI框架有其自身獨特的API,很多的基本功能是所提供的Win32組件。因此,這里的三個類別是不嚴(yán)格。他們只是提供了一個什么東西,你可以在類庫中找到各種有用的想法。</p><p><b> 語言風(fēng)格
15、</b></p><p> C#并不是唯一一個在.NET Framwork上運行的語言。事實上,支持多種語言一直是.NET Framwork的一個主要特點,這體現(xiàn)在它運行環(huán)境引擎的名字上——CLR或者叫通用語言運行環(huán)境。顧名思義,.NET Framwork不只是支持一種編程語言,而是支持多種語言服務(wù)的.NET框架類庫。你為什么會選擇除了C#的其他語言呢?</p><p>
16、 我們已經(jīng)提到了一個重要的原因:C#是專門為.NET設(shè)計的。如果您在C#工作中正在使用以.NET技術(shù)為基礎(chǔ)的工具,如WPF或ASP.NET,那你就會說話他們的語言。與C++相比,它支持原始語言的.NET的擴(kuò)展。擴(kuò)展是經(jīng)過深思熟慮的并且工作的很好,但是所調(diào)用.NET庫的代碼與C++并不相同。但是從正常使用,所以建立的貫通C#與標(biāo)準(zhǔn)化的C++之間的橋梁從來沒有貫通過。同時這個猶如一把雙刃劍,也面臨著困境。比如說你能用標(biāo)準(zhǔn)的C++集合一個或者
17、多個.NET類庫中的類么?在本地.NET語言中,這些問題并不會出現(xiàn)。</p><p> 但C#在這方面并不是獨樹一幟的。 Visual Studio 2010為.NET設(shè)計了三種語言:NET的C#,VB.NET和F#。 (雖然VB.NET從其如下非.NET Visual Basic的前輩,這是在一些重要方面截然不同。它是原生的。NET語言像VB的語法,而不是VB 6中。NET功能螺
18、栓)。這些語言之間的選擇歸結(jié)到什么風(fēng)格的需要的語言。</p><p> F#的奇特之處就在這里。這是一個功能性編程語言,嚴(yán)重影響由毫升語言。早在1991年,當(dāng)你的作者是一年級學(xué)生,我們大學(xué)的計算機(jī)科學(xué)課程的選擇毫升的第一編程語言部分,因為它是如此的學(xué)術(shù)講座,學(xué)生沒有以前遇到這樣的事情。 F#是在頻譜的學(xué)術(shù)年底,盡管仍爬下象牙塔遠(yuǎn)遠(yuǎn)不夠成為一個主流標(biāo)準(zhǔn)的一部分開發(fā)環(huán)境。擅長復(fù)雜的計算和算法,有一些特點
19、,可以幫助并行執(zhí)行。然而,與許多語言功能,使一些困難的問題更容易的成本是很多在更傳統(tǒng)的語言很容易的事情是有顯著努力,在F# - 功能性語言,善于在復(fù)雜的問題,但可以用簡單的笨拙的。 F#將主要用于在科學(xué)或金融應(yīng)用,它似乎進(jìn)行計算的復(fù)雜性,復(fù)雜相形見絀代碼需要采取行動對這些計算的結(jié)果。</p><p> 雖然F#的感覺明顯等,VB.NET和C#有很多相似之處。最在選擇之間的這些明顯的
20、因素是,VB.NET有人更容易學(xué)習(xí)熟悉Visual Basic語法,而C#將是一個熟悉的人更容易C類語言。然而,有微妙的區(qū)別在于:在語言哲學(xué)超越語法。</p><p><b> 組合性</b></p><p> 設(shè)計C#編程語言的一個一致的主題是,它的開發(fā)者傾向于選擇專門的通用功能。有關(guān)于這方面的一個最明顯的例子就是LINQ,C#語言中新添加的語言集成查詢功能。從
21、表面上看,這似乎添加類似SQL的查詢語言功能,提供了一個自然的方式融入你的代碼數(shù)據(jù)庫訪問。例1-2顯示了一個簡單查詢的功能。</p><p> 示例1-2 使用LINQ的數(shù)據(jù)訪問</p><p> var californianAuthors = from author in pubs.authors</p><p> where author.state =
22、= "CA"</p><p> select new</p><p><b> {</b></p><p> author.au_fname,</p><p> author.au_lname</p><p><b> };</b></p&
23、gt;<p> foreach (var author in californianAuthors)</p><p><b> {</b></p><p> Console.WriteLine(author);</p><p><b> }</b></p><p> 顯而易見
24、,C#不知道任何有關(guān)SQL或數(shù)據(jù)庫的內(nèi)容。為了使用此語法,C#3.0中添加了一個語言功能結(jié)合,讓筏代碼這種不只是用于數(shù)據(jù)庫訪問,而且還為XML解析,或工作對象模型。此外,許多個人的特點可以用在其他情況下,我們將在后面的章節(jié)中看到。 C#中喜歡小的,組合的,通用的超過單片式,專業(yè)化的特點。</p><p> 這一理念的一個突出的例子就是在C#中證明原型的一個功能,但最終剩下的只有:XML文本。這一個實驗
25、的語法允許內(nèi)嵌XML,用編譯成代碼,建立模型來來表該XML的方法。C#團(tuán)隊的決定是省略此功能,這說明風(fēng)格的偏好超過了高度專業(yè)化這一一般性的特點。而XML有很多的應(yīng)用,XML的文本語法不能用于其他任何XML,而這種高度專業(yè)化在C#中會感覺到很拘束。</p><p><b> 托管代碼</b></p><p> .NET Framework提供更多的不僅僅是一個類庫。
26、它還以一種微妙的方式不直接訪問調(diào)用類庫而提供服務(wù)。例如,早期我們提到,C??梢宰詣觾?nèi)存管理的某些方面,一個臭名昭著的C + +代碼中的錯誤源。一旦你放棄堆分配對象他們是在C + +的,但它是正常的方式釋放他們。NET編碼錯誤。這CLR的。NET Framework的運行時環(huán)境提供服務(wù)。雖然C#編譯器緊密合作,使這成為可能的運行,提供您的代碼如何使用對象和數(shù)據(jù)的必要的信息,這是最終運行垃圾收集工作。</p><p>
27、; 你以前工作時依賴什么語言,語言很大程度上依賴于運行這個想法似乎完全自然或有些令人不安。這當(dāng)然是從C和C+ +的工作與不同這些語言編譯器的輸出可以直接執(zhí)行,由計算機(jī)和雖然這些語言有一定的運行服務(wù),它可以編寫代碼,沒有他們可以運行。但C#代碼甚至無法執(zhí)行不運行時的幫助。完全取決于運行時的代碼稱為托管代碼。</p><p> 托管編譯器不產(chǎn)生原始的可執(zhí)行代碼。相反,它們產(chǎn)生中間形式的代碼稱為白細(xì)胞介素,中間語言
28、運行時決定。究竟如何轉(zhuǎn)換成可執(zhí)行的東西。一個實際結(jié)果的管理代碼是一個已編譯的C#程序可以運行32位和64位系統(tǒng)不修改,甚至可以運行在不同的處理器架構(gòu),它往往可能VB.NET支持XML文本代碼上運行一個基于ARM的手持設(shè)備的運行在基于Intel的未修改個人電腦,或在Xbox360游戲機(jī)的PowerPC架構(gòu)。</p><p> 如CPU的獨立有趣的可能是在實踐中,最有用的方面的管理代碼和IL。NET運行時,可以提供
29、有用的服務(wù),這都很難傳統(tǒng)的編譯系統(tǒng)要貫徹落實好。換句話說,這一點是使開發(fā)人員的生產(chǎn)力。只是前面提到的內(nèi)存管理其中一個例子。其他包括安全模型,考慮到代碼的起源而不是僅僅發(fā)生運行代碼的用戶的身份;靈活裝載了強(qiáng)大的支持服務(wù)和版本的共享組件的機(jī)制;如何在實踐中使用的代碼正在運行時代碼優(yōu)化的基礎(chǔ)上而不是編譯器猜測它可能被使用;已經(jīng)提到,符合CLR的能力,以驗證該代碼輸入安全規(guī)則,在執(zhí)行前,裁決了整體的安全和穩(wěn)定的錯誤類。</p>&
30、lt;p> 如果你是一個Java開發(fā)人員,這一切聽起來相當(dāng)熟悉,剛剛替補(bǔ)字節(jié)碼IL和故事非常相似。事實上,一個受歡迎的,但有些無知的“笑話”欠周到的Java社區(qū)成員之間形容為一個貧窮的C#仿爪哇。當(dāng)?shù)谝粋€版本的C#出現(xiàn),差異有微妙的,但事實上,Java的去復(fù)制幾個特點,從C#說明的C#總是比只克隆。語言變得更加明顯不同每個新版本,但一個區(qū)別,目前,從一開始就顯得尤為重要Windows開發(fā)C#一直很容易得到的功能底層的Window
31、s平臺。</p><p> 連續(xù)性和windows生態(tài)系統(tǒng)</p><p> 沒有成功的軟件開發(fā)平臺純粹是對自己的優(yōu)點上下文事項。例如,第三方組件和工具的廣泛可用性平臺明顯更具吸引力。 Windows是也許最引人注目的這種現(xiàn)象的例子。任何試圖獲得認(rèn)可的新的編程系統(tǒng)有相當(dāng)大的優(yōu)勢,如果它可以插入一些現(xiàn)有的生態(tài)系統(tǒng),C#和Java之間最大的區(qū)別之一是,C#和。NET框架積極擁抱W
32、indows平臺上,而Java超出其隔離方式從底層的操作系統(tǒng)的開發(fā)。</p><p> 如果你正在編寫一個特定的操作系統(tǒng)上運行的代碼,它不是特別有用語言獨特的工具和組件的削減你到您選擇平臺。而不是要求開發(fā)商與過去決裂NET提供的連續(xù)性它可能是內(nèi)置的組件和服務(wù)直接或Windows內(nèi)置。大多數(shù)時候,你不會需要使用這個類庫提供了很多底層平臺的功能的包裝。然而,如果你需要使用一個第三方組件或功能的操作系統(tǒng)目前還沒有。N
33、ET包裝,工作能力等非托管功能直接從托管代碼是無價的。</p><p> 雖然.NET中提供的功能一體化的基礎(chǔ)平臺,仍然有支持非Windows系統(tǒng)。微軟的Silverlight可以運行的Mac OS X以及Windows的C#和VB.NET代碼。還有一個開源項目稱為單使。NET代碼在Linux上運行,以及相關(guān)的Moonlight項目是一個開源版本的Silverlight。因此,本地平臺整合功能如果你不停止#從多
34、個有用的C平臺要針對多個操作系統(tǒng),你將不只是選擇使用任何特定于平臺的功能。</p><p> 因此,C#和Java之間的哲學(xué)最大的差異是C#提供平等的支持,直接使用操作系統(tǒng)特定功能和平臺獨立性。 Java使得前不成比例比后者更難。</p><p> 最新版本的C#包含的功能,提高能力,進(jìn)一步。幾個新的C#4.0的特性使其更容易互動與Office和其他Windows使用COM自
35、動化的應(yīng)用程序,這是一個在C#3.0中的薄弱點。相對緩解,開發(fā)商可以達(dá)到托管代碼,使邊界之外C#的一個有吸引力的選擇,它提供所有的管理執(zhí)行的好處,但保留工作能力與在Windows環(huán)境中的任何代碼,托管或沒有。</p><p> C#4.0 NET 4和Visual Studio 2010</p><p> 由于C#有利于通用的語言功能設(shè)計要與一個組成另外,它往往不使個別新功能
36、來形容自己的感覺。因此,而不是致力于新功能的部分或全部章節(jié),我們將介紹他們在情況下,適當(dāng)?shù)嘏c其他舊的語言功能集成。本節(jié)您現(xiàn)在正在閱讀的??是一個例外,當(dāng)然,最主要的原因是,我們期望與C#3.0已經(jīng)熟悉的人通過這本書在書店瀏覽尋找我們的新功能的覆蓋面。如果是你,歡迎書!如果您在“前言”,看看你會發(fā)現(xiàn)什么是在這本書中,包括一節(jié)的指南只為你,說明在哪里可以找到關(guān)于C#4.0的功能材料。</p><p> 話雖這么說,
37、一個主題團(tuán)結(jié)在第4版的新的語言特性:它們支持動態(tài)規(guī)劃,特別注重了對某些互操作性方案簡單。例如,可以考慮在示例1-3 C#3.0的代碼,使用部分Office對象模型讀取Word文檔的作者屬性。</p><p> 示例1-3 C#4.0之前的互操作集的復(fù)雜性</p><p> static void Main(string[] args)</p><p>
38、<b> {</b></p><p> var wordApp = new Microsoft.Office.Interop.Word.Application();</p><p> object fileName = @"WordFile.docx";</p><p> object missing = Syste
39、m.Reflection.Missing.Value;</p><p> C# 4.0, .NET 4, and Visual Studio 2010 | 7</p><p> Download from Library of Wow! eBook <www.wowebook.com></p><p> object readOnly = true
40、;</p><p> Microsoft.Office.Interop.Word._Document doc =</p><p> wordApp.Documents.Open(ref fileName, ref missing, ref readOnly,</p><p> ref missing, ref missing, ref missing, ref
41、 missing, ref missing,</p><p> ref missing, ref missing, ref missing, ref missing, ref missing,</p><p> ref missing, ref missing, ref missing);</p><p> object docProperties = doc
42、.BuiltInDocumentProperties;</p><p> Type docPropType = docProperties.GetType();</p><p> object authorProp = docPropType.InvokeMember("Item",</p><p> BindingFlags.Defaul
43、t | BindingFlags.GetProperty,null, docProperties,new object[] { "Author" });</p><p> Type propType = authorProp.GetType();</p><p> string authorName = propType.InvokeMember("Val
44、ue",</p><p> BindingFlags.Default |BindingFlags.GetProperty,null, authorProp,new object[] { }).ToString();</p><p> object saveChanges = false;</p><p> doc.Close(ref saveChan
45、ges, ref missing, ref missing);</p><p> Console.WriteLine(authorName);</p><p><b> }</b></p><p> 這些代碼相當(dāng)可怕,因為很難看出這些代碼在干嘛因為所有的目的都在細(xì)節(jié)中消失了。原因很不讓人愉快因為辦公編程模型是為動態(tài)語言而設(shè)計的,為了能在運
46、行的時候填補(bǔ)很多細(xì)節(jié)。C#3.0中并不能夠做到這一點,所以開發(fā)商不得不手動做這些所有的工作。</p><p> 示例1-4顯示了如何用C#4.0做同樣的工作。這理解起來要簡單的多,因為代碼只包含有關(guān)細(xì)節(jié)。很容易看清楚操作的順序——打開文件,獲取屬性,檢索Author屬性的值并且關(guān)閉該文件。C#4.0現(xiàn)在能夠為我們填補(bǔ)所有的細(xì)節(jié),這要歸功于它新的動態(tài)語言功能。</p><p> 示例1-
47、4 office互操作與C#4.0</p><p> static void Main(string[] args)</p><p><b> {</b></p><p> var wordApp = new Microsoft.Office.Interop.Word.Application();</p><p>
48、 Microsoft.Office.Interop.Word._Document doc =</p><p> wordApp.Documents.Open("WordFile.docx", ReadOnly: true);</p><p> dynamic docProperties = doc.BuiltInDocumentProperties;</p&
49、gt;<p> string authorName = docProperties["Author"].Value;</p><p> doc.Close(SaveChanges: false);</p><p> Console.WriteLine(authorName);</p><p><b> }</
50、b></p><p><b> 附件2:外文原文</b></p><p> Introducing C#</p><p> C#-pronounced “See Sharp”-is a programming language designed for Microsoft’s .NET platform. Since its fir
51、st release in 2002, C# has found many roles. It is widely used on the server side of websites, and also on both the client and server in line-of-business Windows desktop applications. You can write smartphone user interf
52、aces and Xbox 360 games in C#. More recently, Microsoft’s Silverlight platform has made C# an option for writing Rich Internet Applications that run in a web browser. </p><p> But what kind of language is C
53、#? To understand a language well enough to use it effectively, it’s not enough to focus purely on the details and mechanisms, although we’ll be spending plenty of time on those in this book. It is equally important to un
54、derstand the thinking behind the details. So in this chapter, we’ll look at what problems C# was built to solve. Then we’ll explore the style of the language, through aspects that distinguish it from other languages. And
55、 we’ll finish the chapter with</p><p> Why C#? Why .NET?</p><p> Programming languages exist to help developers be more productive. Many successful languages simplify or automate tedious tasks
56、 that previously had to be done by hand. Some offer new techniques that allow old problems to be tackled more effectively, or on a larger scale than before. How much difference C# can make to you will depend on your prog
57、ramming background, of course, so it’s worth considering what sorts of people the language designers had in mind when they created C#.</p><p> C# is aimed at developers working on the Windows platform, and
58、its syntax is instantly familiar to users of C or C++, or other languages that draw from the same tradition, such as JavaScript and Java. Fundamental language elements such as statements, expressions, function declaratio
59、ns, and flow control are modeled as closely as possible on their equivalents in C family languages.</p><p> A familiar syntax is not enough of a reason to pick a language, of course, so C# offers productivi
60、ty-enhancing features not found in some of its predecessors. Garbage collection frees developers from the tyranny of common memory management problems such as memory leaks and circular references. Verifiable type safety
61、of compiled code rules out a wide range of bugs and potential security flaws. While C or C++ Windows developers may not be accustomed to those features, they will seem old hat to Jav</p><p> Many of the mos
62、t useful features available to C# developers come from the .NET Framework, which provides the runtime environment and libraries for C#, and all other .NET languages, such as VB.NET. C# was designed for .NET, and one of t
63、he main benefits of its close relationship with the .NET Framework is that working with framework features such as the class library feels very natural.</p><p> The .NET Framework Class Library</p>&
64、lt;p> Working in C# means more than using just the language-the classes offered by the .NET Framework are an extremely important part of the C# developer’s everyday experience (and they account for a lot of this book
65、’s content). Most of the library functionality falls into one of three categories: utility features written in .NET, wrappers around Windows functionality, and frameworks.</p><p> The first group comprises
66、utility types such as dictionaries, lists, and other collection classes, as well as string manipulation facilities such as a regular expression engine. There are also features that operate on a slightly larger scale, suc
67、h as the object models for representing XML documents.</p><p> Some library features are wrappers around underlying OS functionality. For example, there are classes for accessing the filesystem, and for usi
68、ng network features such as sockets. And there are classes for writing output to the console, which we can illustrate with the obligatory first example of any programming language book, shown in Example 1-1.</p>&
69、lt;p> Example 1-1. The inevitable “Hello, world” example</p><p> class Program</p><p><b> {</b></p><p> static void Main(){</p><p> System.Console.W
70、riteLine("Hello, world");}</p><p><b> }</b></p><p> We’ll examine all the pieces shown here in due course, but for now, note that even this simplest of examples depends o
71、n a class from the library-the System.Console class in this case-to do its job.</p><p> Finally, the class library offers whole frameworks to support building certain kinds of applications. For example, Win
72、dows Presentation Foundation (WPF) is a framework for building Windows desktop software; ASP.NET (which is not an acronym, despite appearances) is a framework for building web applications. Not all frameworks are about u
73、ser interfaces-Windows Communication Foundation (WCF) is designed for building services accessed over the network by other computer systems, for instance.</p><p> These three categories are not strict, as q
74、uite a few classes fit into two. For example, the parts of the class library that provide access to the filesystem are not just thin wrappers around existing Win32 APIs. They add new object-oriented abstractions, providi
75、ng significant functionality beyond the basic file I/O services, so these types fit into both the first and second categories. Likewise, frameworks usually need to integrate with underlying services to some extent—for ex
76、ample, although t</p><p> Language Style</p><p> C# is not the only language that runs on the .NET Framework. Indeed, support for multiple languages has always been a key feature of .NET, refl
77、ected in the name of its runtime engine, the CLR or Common Language Runtime. As this name implies, .NET is not just for one language—numerous languages have access to the services of the .NET Framework class library. Why
78、 might you choose C# over the others?</p><p> We already mentioned one important reason: C# was designed specifically for .NET. If you are working with .NET technologies such as WPF or ASP.NET, you’ll be sp
79、eaking their language if you work in C#. Compare this with C++, which supports .NET through extensions to the original language. The extensions are carefully thought out and work well, but code that uses .NET libraries j
80、ust looks different from normal C++, so programs that bridge the worlds of .NET and standard C++ never feel completely c</p><p> But C# is not unique in this respect. Visual Studio 2010 ships with three lan
81、guages designed for .NET: C#, VB.NET, and F#. (Although VB.NET follows on from its non-.NET Visual Basic predecessors, it was radically different in some important ways. It is a native .NET language with a VB-like syntax
82、 rather than VB 6 with .NET capabilities bolted on.) The choice between these languages comes down to what style of language you prefer.</p><p> F# is the odd one out here. It’s a functional programming lan
83、guage, heavily influenced by a language called ML. Back in 1991, when your authors were first-year students, our university’s computer science course chose ML for the first programming language lectures in part because i
84、t was so academic that none of the students would previously have come across anything like it. F# is still at the academic end of the spectrum despite having climbed far enough down the ivory tower to be a standard par&
85、lt;/p><p> While F# feels distinctly other, VB.NET and C# have a lot of similarities. The most obvious factor in choosing between these is that VB.NET is easier to learn for someone familiar with Visual Basic
86、syntax, while C# will be easier for someone familiar with a C-like language. However, there is a subtler difference in language philosophy that goes beyond the syntax.</p><p> Composability</p><p
87、> A consistent theme in the design of the C# programming language is that its creators tend to prefer general-purpose features over specialized ones. The most obvious example of this is LINQ, the Language Integrated
88、Query feature added in C# 3.0. Superficially, this appears to add SQL-like query features to the language, providing a natural way to integrate database access into your code. Example 1-2 shows a simple query.</p>
89、<p> Example 1-2. Data access with LINQ</p><p> var californianAuthors = from author in pubs.authors</p><p> where author.state == "CA"</p><p> select new</p&
90、gt;<p><b> {</b></p><p> author.au_fname,</p><p> author.au_lname</p><p><b> };</b></p><p> foreach (var author in californianAuthor
91、s)</p><p><b> {</b></p><p> Console.WriteLine(author);</p><p><b> }</b></p><p> Despite appearances, C# doesn’t know anything about SQL or d
92、atabases. To enable this syntax, C# 3.0 added a raft of language features which, in combination, allow code of this sort to be used not just for database access, but also for XML parsing, or working with object models. M
93、oreover, many of the individual features can be used in other contexts, as we’ll see in later chapters. C# prefers small, composable, general-purpose features over monolithic, specialized ones.</p><p> A st
94、riking example of this philosophy is a feature that was demonstrated in prototype form in C#, but which eventually got left out: XML literals. This experimental syntax allowed inline XML, which compiled into code that bu
95、ilt an object model representing that XML. The C# team’s decision to omit this feature illustrates a stylistic preference for generality over highly specialized features—while the LINQ syntax has many applications, XML l
96、iteral syntax cannot be used for anything other than XML</p><p> Managed Code</p><p> The .NET Framework provides more than just a class library. It also provides services in subtler ways that
97、 are not accessed explicitly through library calls. For example, earlier we mentioned that C# can automate some aspects of memory management, a notorious source of bugs in C++ code. Abandoning heap-allocated objects once
98、 you’re done with them is a coding error in C++, but it’s the normal way to free them in .NET. This service is provided by the CLR-the .NET Framework’s runtime environment. A</p><p> Depending on what sorts
99、 of languages you may have worked with before, the idea that the language depends heavily on the runtime might seem either completely natural or somewhat disconcerting. It’s certainly different from how C and C++ work-wi
100、th those languages, the compiler’s output can be executed directly by the computer, and although those languages have some runtime services, it’s possible to write code that can run without them. But C# code cannot even
101、execute without the help of the runti</p><p> Managed compilers do not produce raw executable code. Instead, they produce an intermediate form of code called IL, the Intermediate Language. The runtime decid
102、es exactly how to convert it into something executable. One practical upshot of managed code is that a compiled C# program can run on both 32-bit and 64-bit systems without modification, and can even run on different pro
103、cessor architectures-it’s often possible for code that runs on an ARM-based handheld device to run unmodified on Intel-b</p><p> As interesting as CPU independence may be, in practice the most useful aspect
104、 of managed code and IL is that the .NET runtime can provide useful services that are very hard for traditional compilation systems to implement well. In other words, the point is to make developers more productive. The
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c#編程規(guī)范
- c#基礎(chǔ)介紹外文翻譯
- msdn c#編程指南
- c#網(wǎng)絡(luò)編程初探
- c#文獻(xiàn)翻譯---c#的優(yōu)點
- c#的usb通訊編程
- arcengine基于c#編程實例講解
- 計算機(jī)外文翻譯--c#設(shè)計模式
- 銀行存取款案例(c#編程)
- c#編程知識匯編之一【201401】
- c#程序的回歸測試選擇-外文翻譯
- c# .net_經(jīng)典編程例子400個
- c#數(shù)據(jù)庫編程添加刪除記錄
- c#數(shù)據(jù)庫編程_添加刪除記錄
- C#學(xué)生管理系統(tǒng)的設(shè)計外文資料翻譯.doc
- C、C++和C#語言中編程實體的研究.pdf
- 基于c#的socket編程的tcp異步實現(xiàn)
- 計算機(jī)外文翻譯---asp.net入門c#版
- 基于c#聊天群的編程畢業(yè)論文
- 計算機(jī)外文翻譯--c#程序的回歸測試選擇
評論
0/150
提交評論