More Effective C#中文版

出版時(shí)間:2009-11  出版社:人民郵電出版社  作者:[美]Bill Wagner  頁數(shù):292  譯者:陳黎夫  
Tag標(biāo)簽:無  

前言

  自從Anders Hejlsberg在2005年專業(yè)開發(fā)者大會(huì)上第一次演示LINQ(Language-Integrated Query,語言集成查詢)以來,C#編程世界就被徹底地改變了。LINQ的出現(xiàn)為C#語言帶來了幾個(gè)令人著迷的新特性:擴(kuò)展方法、局部變量類型推斷、lambda表達(dá)式、匿名類型、對(duì)象初始化器以及集合初始化器。C#2.0也為LINO的出現(xiàn)打下了堅(jiān)實(shí)的基礎(chǔ),添加了包括泛型、迭代器、靜態(tài)類、可空類型、屬性訪問器權(quán)限以及匿名委托等新功能。但即使在非LINQ的使用環(huán)境中,這些語言特性也有大顯身手之處——畢竟還有很多非數(shù)據(jù)訪問的編程任務(wù)?! ”緯槍?duì)C#2.0和C#3.0中添加的新特性給出了實(shí)用的建議,也包含了在我的上本圖書Effcetive V:50 Specific Ways to Improve Your C#(Addison-Wesley,2004)中沒有提到的高級(jí)特性。本書中的條目主要針對(duì)那些正在使用C#3.0編寫程序的開發(fā)人員。書中著重介紹了泛型技術(shù),這是C#2.0和C#3.0中眾多新特性的基石。本書并沒有將條目按照語言特性組織起來,而是根據(jù)新特性最善于解決的編程問題來編排條目的。

內(nèi)容概要

  《More Effective C#中文版:改善C#程序的50個(gè)具體辦法》延續(xù)了Effective系列圖書的風(fēng)格,針對(duì)C# 2.0和C# 3.0中添加的新特性給出了實(shí)用的建議。書中的50個(gè)條目自成一體且又絲絲相扣,這些條目按照泛型、多線程開發(fā)、C#設(shè)計(jì)模式、C# 3.0語言增強(qiáng)、LINQ以及雜項(xiàng)等主題分為6類,將特定的代碼和深入的分析有機(jī)地結(jié)合了起來,能夠幫助你以最佳的方式從C# 1.x切換至C# 3.0。當(dāng)你通讀全書之后,會(huì)發(fā)現(xiàn)不只得到了一條條獨(dú)立的建議,還學(xué)到了如何以優(yōu)雅的方式用C#進(jìn)行程序設(shè)計(jì)?!  禡ore Effective C#中文版:改善C#程序的50個(gè)具體辦法》適合具有C#編程經(jīng)驗(yàn)的.NET開發(fā)人員閱讀。

作者簡介

  瓦格納(Bill Wagner),擁有超過25年的軟件開發(fā)經(jīng)驗(yàn)。世界知名的.NET專家。微軟C#MVP。并榮獲微軟Regional Director稱號(hào)。他是著名軟件咨詢公司SRT Solutions的創(chuàng)始人。曾經(jīng)領(lǐng)導(dǎo)了眾多成功的Windows平臺(tái)產(chǎn)品的開發(fā)。他是微軟開發(fā)社區(qū)的活躍人物,長期擔(dān)任MSDN Magazine、ASRNETPro、Visual Studio Magazine等技術(shù)雜志的專欄作者。他還是暢銷書《Effective C#中文版》(人民郵電出版社,2007)的作者。他的博客是http://srtsolutions.com/blogs/billwagner??梢酝ㄟ^bill.wagner@srtsolutions.com與他聯(lián)系?! ∽g者簡介:  陳黎夫,畢業(yè)于上海交通大學(xué)計(jì)算機(jī)科學(xué)專業(yè)。有多年業(yè)界經(jīng)驗(yàn),曾在微軟、EMC等公司任職,現(xiàn)任某創(chuàng)業(yè)技術(shù)公司CTO。專注于微軟技術(shù)與LAMP開發(fā)平臺(tái)。并連續(xù)3年榮獲微軟MVP稱號(hào)。有多本計(jì)算機(jī)領(lǐng)域內(nèi)著作/譯作出版。內(nèi)容涵蓋CSS、A.JAX、ASP.NET、C#、LINQ和.NET平臺(tái)架構(gòu)等多個(gè)方面。可以通過dflyingchen@gmail.com與他聯(lián)系。

書籍目錄

第1章 使用泛型 1條目1:使用1.x框架API的泛型版本 4條目2:恰到好處地定義約束 14條目3:運(yùn)行時(shí)檢查泛型參數(shù)的類型并提供特定的算法 19條目4:使用泛型強(qiáng)制編譯期類型推斷 26條目5:確保泛型類型支持可銷毀對(duì)象 32條目6:使用委托定義類型參數(shù)上的方法約束 36條目7:不要為基類或接口創(chuàng)建泛型的特殊實(shí)現(xiàn) 42條目8:盡可能使用泛型方法,除非需要將類型參數(shù)用于實(shí)例的字段中 46條目9:使用泛型元組代替out和ref參數(shù) 50條目10:在實(shí)現(xiàn)泛型接口的同時(shí)也實(shí)現(xiàn)傳統(tǒng)接口 56第2章 C#中的多線程 63條目11:使用線程池而不是創(chuàng)建線程 67條目12:使用BackgroundWorker實(shí)現(xiàn)線程間通信 74條目13:讓lock()作為同步的第一選擇 78條目14:盡可能地減小鎖對(duì)象的作用范圍 86條目15:避免在鎖定區(qū)域內(nèi)調(diào)用外部代碼 90條目16:理解Windows窗體和WPF中的跨線程調(diào)用 93第3章 C#設(shè)計(jì)實(shí)踐 105條目17:為序列創(chuàng)建可組合的API 105條目18:將遍歷和操作、謂詞以及函數(shù)分開 112條目19:根據(jù)需要生成序列中的元素 117條目20:使用函數(shù)參數(shù)降低耦合 120條目21:讓重載方法組盡可能清晰、最小化且完整 127條目22:定義方法后再重載操作符 134條目23:理解事件是如何增加對(duì)象間運(yùn)行時(shí)耦合的 137條目24:僅聲明非虛的事件 139條目25:使用異常來報(bào)告方法的調(diào)用失敗 146條目26:確保屬性的行為與數(shù)據(jù)類似 150條目27:區(qū)分繼承和組合 156第4章 C# 3.0語言增強(qiáng) 163條目28:使用擴(kuò)展方法增強(qiáng)現(xiàn)有接口 163條目29:使用擴(kuò)展方法增強(qiáng)現(xiàn)有類型 167條目30:推薦使用隱式類型局部變量 169條目31:使用匿名類型限制類型的作用域 176條目32:為外部組件創(chuàng)建可組合的API 180條目33:避免修改綁定變量 185條目34:為匿名類型定義局部函數(shù) 191條目35:不要在不同命名空間中聲明同名的擴(kuò)展方法 196第5章 使用LINQ 201條目36:理解查詢表達(dá)式與方法調(diào)用之間的映射 201條目37:推薦使用延遲求值查詢 213條目38:推薦使用lambda表達(dá)式而不是方法 218條目39:避免在函數(shù)或操作中拋出異?!?22條目40:區(qū)分早期執(zhí)行和延遲執(zhí)行 225條目41:避免在閉包中捕獲昂貴的外部資源 229條目42:區(qū)分IEnumerable和IQueryable數(shù)據(jù)源 242條目43:使用Single()和First()來明確給出對(duì)查詢結(jié)果的期待 247條目44:推薦保存Expression而不是Func 249第6章 雜項(xiàng) 255條目45:最小化可空類型的可見范圍 255條目46:為部分類的構(gòu)造函數(shù)、修改方法以及事件處理程序提供部分方法 261條目47:僅在需要parms數(shù)組時(shí)才使用數(shù)組作為參數(shù) 266條目48:避免在構(gòu)造函數(shù)中調(diào)用虛方法 271條目49:考慮為大型對(duì)象使用弱引用 274條目50:使用隱式屬性表示可變但不可序列化的數(shù)據(jù) 277索引 283

章節(jié)摘錄

  當(dāng)運(yùn)行時(shí)需要JIT編譯一個(gè)泛型定義(泛型方法或泛型類),且至少有一個(gè)類型參數(shù)為值類型時(shí),那么該過程可以分為兩個(gè)步驟。首先,編譯器將創(chuàng)建一個(gè)新的IL類,用來表示該封閉泛型類型。例如,在泛型定義中將T用int或其他某種值類型替換。隨后,JIT將把該代碼編譯成x86指令。這兩個(gè)步驟非常有必要,因?yàn)镴IT并不是在某個(gè)類加載時(shí)就為其生成完整的x86指令,而是僅在類中的每個(gè)方法被第一次調(diào)用時(shí)才開始編譯的。這樣,框架有必要在IL代碼上先執(zhí)行一個(gè)替換的步驟,隨后再像普通類定義一樣按需編譯?! ∵@也就意味著運(yùn)行時(shí)的額外內(nèi)存占用將分為如下兩個(gè)部分:一是為每種用值類型作為參數(shù)的封閉泛型類型保存一份IL定義的副本,二是為每種用值類型作為參數(shù)的封閉類型保存一份所調(diào)用方法的機(jī)器碼的副本。  不過這個(gè)使用值類型作為泛型參數(shù)的做法也有它的好處:避免了對(duì)于值類型的裝箱和拆箱操作,這樣也就降低了值類型的代碼/數(shù)據(jù)所占用的空間。此外,類型安全可以由編譯器保證,也就讓框架不必忙于進(jìn)行運(yùn)行時(shí)檢查,進(jìn)一步降低了代碼量并提高了程序的性能。不僅如此,與創(chuàng)建泛型類相比,創(chuàng)建泛型方法將有助于降低為支持不同實(shí)例而需要額外生成的IL代碼量(將在條目8中介紹)。只有實(shí)際用到的方法才會(huì)被實(shí)例化。非泛型類中定義的泛型方法將不會(huì)被JIT編譯。

媒體關(guān)注與評(píng)論

  “身為C#設(shè)計(jì)組的成員,我很少能夠從C#書中學(xué)到什么新東西,本書則是個(gè)例外,它很好地將特定的代碼和深入的分析結(jié)合了起來?!@些富有洞察力的、充滿遠(yuǎn)見的內(nèi)容會(huì)給你日后學(xué)習(xí)C#很大的啟發(fā)和幫助?!薄  狹ads Torgersen,微軟公司Visual C#項(xiàng)目經(jīng)理  “Bill Wagner為C#開發(fā)人員撰寫了一部精彩絕倫的圖書,其中介紹了大量C#最佳實(shí)踐。……若想成為C#開發(fā)的頂級(jí)高手。那么沒有什么資料比Bill Wagner的這本書更好了。Bill非常智慧、深刻,富有經(jīng)驗(yàn)和技巧。若能將這本書中給出的建議應(yīng)用到你的代碼中,定會(huì)大大提高你的工作質(zhì)量。”  ——Charlie Calvert,微軟公司Visuak C#社區(qū)項(xiàng)目經(jīng)理

編輯推薦

  C#語言已經(jīng)成為目前功能最強(qiáng)大的通用語言之一,近幾年的幾次升級(jí)更是令C#編程世界發(fā)生了極大的改變?!禡ore Effective C#中文版:改善C#程序的50個(gè)具體辦法》是Effective C#的續(xù)作,秉承了Effective經(jīng)典系列的卓越風(fēng)格,用真實(shí)的代碼示例。通過清晰、貼近實(shí)際和簡明的闡述,以條目形式為廣大程序員提供了凝聚業(yè)界經(jīng)驗(yàn)結(jié)晶的專家建議?!  禡ore Effective C#中文版:改善C#程序的50個(gè)具體辦法》中,著名.NET專家Bill Wagner圍繞C#2.0和3.0中的新特性給出了實(shí)用的建議,涉及泛型、多線程編程、設(shè)計(jì)實(shí)踐、C#3.0語言增強(qiáng)、LINQ、可空類型等主題,講述了如何在開發(fā)中使用這些新語言特性,如何避免誤用造成的影響。書中每個(gè)條目自成一體,針對(duì)使用C#時(shí)的某個(gè)特定問題。幫助你以最佳的方式切換至C#3.0。通過閱讀《More Effective C#中文版:改善C#程序的50個(gè)具體辦法》,讀者完全可以舉一反三,將其中許多建議應(yīng)用到自己的日常編程工作中?! #語言頂級(jí)高手的秘籍  業(yè)界資深專家智慧和經(jīng)驗(yàn)的結(jié)晶  理論和實(shí)踐的完美結(jié)合

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    More Effective C#中文版 PDF格式下載


用戶評(píng)論 (總計(jì)0條)

 
 

 

250萬本中文圖書簡介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7