出版時間:2009-11 出版社:人民郵電出版社 作者:[美]Bill Wagner 頁數(shù):292 譯者:陳黎夫
Tag標簽:無
前言
自從Anders Hejlsberg在2005年專業(yè)開發(fā)者大會上第一次演示LINQ(Language-Integrated Query,語言集成查詢)以來,C#編程世界就被徹底地改變了。LINQ的出現(xiàn)為C#語言帶來了幾個令人著迷的新特性:擴展方法、局部變量類型推斷、lambda表達式、匿名類型、對象初始化器以及集合初始化器。C#2.0也為LINO的出現(xiàn)打下了堅實的基礎,添加了包括泛型、迭代器、靜態(tài)類、可空類型、屬性訪問器權限以及匿名委托等新功能。但即使在非LINQ的使用環(huán)境中,這些語言特性也有大顯身手之處——畢竟還有很多非數(shù)據(jù)訪問的編程任務?! ”緯槍#2.0和C#3.0中添加的新特性給出了實用的建議,也包含了在我的上本圖書Effcetive V:50 Specific Ways to Improve Your C#(Addison-Wesley,2004)中沒有提到的高級特性。本書中的條目主要針對那些正在使用C#3.0編寫程序的開發(fā)人員。書中著重介紹了泛型技術,這是C#2.0和C#3.0中眾多新特性的基石。本書并沒有將條目按照語言特性組織起來,而是根據(jù)新特性最善于解決的編程問題來編排條目的。
內(nèi)容概要
《More Effective C#中文版:改善C#程序的50個具體辦法》延續(xù)了Effective系列圖書的風格,針對C# 2.0和C# 3.0中添加的新特性給出了實用的建議。書中的50個條目自成一體且又絲絲相扣,這些條目按照泛型、多線程開發(fā)、C#設計模式、C# 3.0語言增強、LINQ以及雜項等主題分為6類,將特定的代碼和深入的分析有機地結合了起來,能夠幫助你以最佳的方式從C# 1.x切換至C# 3.0。當你通讀全書之后,會發(fā)現(xiàn)不只得到了一條條獨立的建議,還學到了如何以優(yōu)雅的方式用C#進行程序設計?! 禡ore Effective C#中文版:改善C#程序的50個具體辦法》適合具有C#編程經(jīng)驗的.NET開發(fā)人員閱讀。
作者簡介
瓦格納(Bill Wagner),擁有超過25年的軟件開發(fā)經(jīng)驗。世界知名的.NET專家。微軟C#MVP。并榮獲微軟Regional Director稱號。他是著名軟件咨詢公司SRT Solutions的創(chuàng)始人。曾經(jīng)領導了眾多成功的Windows平臺產(chǎn)品的開發(fā)。他是微軟開發(fā)社區(qū)的活躍人物,長期擔任MSDN Magazine、ASRNETPro、Visual Studio Magazine等技術雜志的專欄作者。他還是暢銷書《Effective C#中文版》(人民郵電出版社,2007)的作者。他的博客是http://srtsolutions.com/blogs/billwagner。可以通過bill.wagner@srtsolutions.com與他聯(lián)系?! ∽g者簡介: 陳黎夫,畢業(yè)于上海交通大學計算機科學專業(yè)。有多年業(yè)界經(jīng)驗,曾在微軟、EMC等公司任職,現(xiàn)任某創(chuàng)業(yè)技術公司CTO。專注于微軟技術與LAMP開發(fā)平臺。并連續(xù)3年榮獲微軟MVP稱號。有多本計算機領域內(nèi)著作/譯作出版。內(nèi)容涵蓋CSS、A.JAX、ASP.NET、C#、LINQ和.NET平臺架構等多個方面??梢酝ㄟ^dflyingchen@gmail.com與他聯(lián)系。
書籍目錄
第1章 使用泛型 1條目1:使用1.x框架API的泛型版本 4條目2:恰到好處地定義約束 14條目3:運行時檢查泛型參數(shù)的類型并提供特定的算法 19條目4:使用泛型強制編譯期類型推斷 26條目5:確保泛型類型支持可銷毀對象 32條目6:使用委托定義類型參數(shù)上的方法約束 36條目7:不要為基類或接口創(chuàng)建泛型的特殊實現(xiàn) 42條目8:盡可能使用泛型方法,除非需要將類型參數(shù)用于實例的字段中 46條目9:使用泛型元組代替out和ref參數(shù) 50條目10:在實現(xiàn)泛型接口的同時也實現(xiàn)傳統(tǒng)接口 56第2章 C#中的多線程 63條目11:使用線程池而不是創(chuàng)建線程 67條目12:使用BackgroundWorker實現(xiàn)線程間通信 74條目13:讓lock()作為同步的第一選擇 78條目14:盡可能地減小鎖對象的作用范圍 86條目15:避免在鎖定區(qū)域內(nèi)調(diào)用外部代碼 90條目16:理解Windows窗體和WPF中的跨線程調(diào)用 93第3章 C#設計實踐 105條目17:為序列創(chuàng)建可組合的API 105條目18:將遍歷和操作、謂詞以及函數(shù)分開 112條目19:根據(jù)需要生成序列中的元素 117條目20:使用函數(shù)參數(shù)降低耦合 120條目21:讓重載方法組盡可能清晰、最小化且完整 127條目22:定義方法后再重載操作符 134條目23:理解事件是如何增加對象間運行時耦合的 137條目24:僅聲明非虛的事件 139條目25:使用異常來報告方法的調(diào)用失敗 146條目26:確保屬性的行為與數(shù)據(jù)類似 150條目27:區(qū)分繼承和組合 156第4章 C# 3.0語言增強 163條目28:使用擴展方法增強現(xiàn)有接口 163條目29:使用擴展方法增強現(xiàn)有類型 167條目30:推薦使用隱式類型局部變量 169條目31:使用匿名類型限制類型的作用域 176條目32:為外部組件創(chuàng)建可組合的API 180條目33:避免修改綁定變量 185條目34:為匿名類型定義局部函數(shù) 191條目35:不要在不同命名空間中聲明同名的擴展方法 196第5章 使用LINQ 201條目36:理解查詢表達式與方法調(diào)用之間的映射 201條目37:推薦使用延遲求值查詢 213條目38:推薦使用lambda表達式而不是方法 218條目39:避免在函數(shù)或操作中拋出異?!?22條目40:區(qū)分早期執(zhí)行和延遲執(zhí)行 225條目41:避免在閉包中捕獲昂貴的外部資源 229條目42:區(qū)分IEnumerable和IQueryable數(shù)據(jù)源 242條目43:使用Single()和First()來明確給出對查詢結果的期待 247條目44:推薦保存Expression而不是Func 249第6章 雜項 255條目45:最小化可空類型的可見范圍 255條目46:為部分類的構造函數(shù)、修改方法以及事件處理程序提供部分方法 261條目47:僅在需要parms數(shù)組時才使用數(shù)組作為參數(shù) 266條目48:避免在構造函數(shù)中調(diào)用虛方法 271條目49:考慮為大型對象使用弱引用 274條目50:使用隱式屬性表示可變但不可序列化的數(shù)據(jù) 277索引 283
章節(jié)摘錄
當運行時需要JIT編譯一個泛型定義(泛型方法或泛型類),且至少有一個類型參數(shù)為值類型時,那么該過程可以分為兩個步驟。首先,編譯器將創(chuàng)建一個新的IL類,用來表示該封閉泛型類型。例如,在泛型定義中將T用int或其他某種值類型替換。隨后,JIT將把該代碼編譯成x86指令。這兩個步驟非常有必要,因為JIT并不是在某個類加載時就為其生成完整的x86指令,而是僅在類中的每個方法被第一次調(diào)用時才開始編譯的。這樣,框架有必要在IL代碼上先執(zhí)行一個替換的步驟,隨后再像普通類定義一樣按需編譯。 這也就意味著運行時的額外內(nèi)存占用將分為如下兩個部分:一是為每種用值類型作為參數(shù)的封閉泛型類型保存一份IL定義的副本,二是為每種用值類型作為參數(shù)的封閉類型保存一份所調(diào)用方法的機器碼的副本?! 〔贿^這個使用值類型作為泛型參數(shù)的做法也有它的好處:避免了對于值類型的裝箱和拆箱操作,這樣也就降低了值類型的代碼/數(shù)據(jù)所占用的空間。此外,類型安全可以由編譯器保證,也就讓框架不必忙于進行運行時檢查,進一步降低了代碼量并提高了程序的性能。不僅如此,與創(chuàng)建泛型類相比,創(chuàng)建泛型方法將有助于降低為支持不同實例而需要額外生成的IL代碼量(將在條目8中介紹)。只有實際用到的方法才會被實例化。非泛型類中定義的泛型方法將不會被JIT編譯。
媒體關注與評論
“身為C#設計組的成員,我很少能夠從C#書中學到什么新東西,本書則是個例外,它很好地將特定的代碼和深入的分析結合了起來?!@些富有洞察力的、充滿遠見的內(nèi)容會給你日后學習C#很大的啟發(fā)和幫助?!薄 狹ads Torgersen,微軟公司Visual C#項目經(jīng)理 “Bill Wagner為C#開發(fā)人員撰寫了一部精彩絕倫的圖書,其中介紹了大量C#最佳實踐。……若想成為C#開發(fā)的頂級高手。那么沒有什么資料比Bill Wagner的這本書更好了。Bill非常智慧、深刻,富有經(jīng)驗和技巧。若能將這本書中給出的建議應用到你的代碼中,定會大大提高你的工作質(zhì)量。” ——Charlie Calvert,微軟公司Visuak C#社區(qū)項目經(jīng)理
編輯推薦
C#語言已經(jīng)成為目前功能最強大的通用語言之一,近幾年的幾次升級更是令C#編程世界發(fā)生了極大的改變?!禡ore Effective C#中文版:改善C#程序的50個具體辦法》是Effective C#的續(xù)作,秉承了Effective經(jīng)典系列的卓越風格,用真實的代碼示例。通過清晰、貼近實際和簡明的闡述,以條目形式為廣大程序員提供了凝聚業(yè)界經(jīng)驗結晶的專家建議?! 禡ore Effective C#中文版:改善C#程序的50個具體辦法》中,著名.NET專家Bill Wagner圍繞C#2.0和3.0中的新特性給出了實用的建議,涉及泛型、多線程編程、設計實踐、C#3.0語言增強、LINQ、可空類型等主題,講述了如何在開發(fā)中使用這些新語言特性,如何避免誤用造成的影響。書中每個條目自成一體,針對使用C#時的某個特定問題。幫助你以最佳的方式切換至C#3.0。通過閱讀《More Effective C#中文版:改善C#程序的50個具體辦法》,讀者完全可以舉一反三,將其中許多建議應用到自己的日常編程工作中。 C#語言頂級高手的秘籍 業(yè)界資深專家智慧和經(jīng)驗的結晶 理論和實踐的完美結合
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載