# 第四章 和框架一起工作
**By D.S.Qiu**
**尊重他人的勞動,支持原創,轉載請注明出處:[http://dsqiu.iteye.com](http://dsqiu.iteye.com)**
在2002年 .NET 第一個發布,我的朋友兼同事 Martin Shoemaker 組織過一次圓桌會議研究討論“我必須寫這樣的 .NET 代碼嗎?”在那時這是一個偉大的圓桌會議,現在也更相關了。.NET 框架已經進步了,而且比那時包含更多的新類和特性。重要的是你不用再創建已經存在的特性。
.NET 框架是一個豐富的類庫。你對框架了解的越多,你自己需要寫的代碼就越少。這個框架類庫為你做了更多工作。不好的是,基礎類庫需要應付版本4的相關問題。有更好的方式解決在版本1遺留的問題。但是框架團隊不會刪除這些就的 API 和類。甚至都沒有將那些舊的 API 標記為過時的。它們仍然可以工作,而且你也不會對重寫正在工作的代碼感興趣。但是當你要創建信的嗲嗎,你應該使用已存在的最好的工具。這章展示給你 .NET 框架版本4.0的技術。當你面臨框架多個選擇可用時,有一些原則可以幫助你做最好的選擇。還有一些原則解釋一些技術,你可以使用它們,當你想要你的類更好和框架設計者創建的類協作。
小結:
第四章主要是如何充分利用 C# 4.0框架實現的功能,減少自己的實現。正如上面說的,你對 .NET 了解的越多,你需要實現的特性就越少。很多模式和機制,.NET 都已經提供了類和 API 實現了,不需要操心太多,我們只需要理解它們的原理,才會用的更好!因為工作中還沒有涉及到對 PLINQ 的使用,但是在翻譯的過程中還是受益頗多。
附上第四章目錄:
+ [原則30:選擇重載而不是事件處理器](/blog/2087024)
+ [原則31:用 IComparable<T> 和 IComparer<T> 實現排序關系](/blog/2087383)
+ [原則32:避免 ICloneable](/blog/2087490)
+ [原則33:只有基類更新處理才使用 new 修飾符](/blog/2087773)
+ [原則34:避免定義在基類的方法的重寫](/blog/2088635)
+ [原則35:理解 PLINQ 并行算法的實現](/blog/2088663)
+ [原則36:理解 I/O 受限制(Bound)操作 PLINQ 的使用](/blog/2088750)
+ [原則37:構造并行算法的異常考量](/blog/2088794)
歡迎各種不爽,各種噴,寫這個純屬個人愛好,秉持”分享“之德!
有關本書的其他章節翻譯請[點擊查看](/category/297763),轉載請注明出處,尊重原創!
如果您對D.S.Qiu有任何建議或意見可以在文章后面評論,或者發郵件(gd.s.qiu@gmail.com)交流,您的鼓勵和支持是我前進的動力,希望能有更多更好的分享。
轉載請在**文首**注明出處:[http://dsqiu.iteye.com/blog/2088853](/blog/2088853)
更多精彩請關注D.S.Qiu的博客和微博(ID:靜水逐風)
- 第一章 C# 語言習慣
- 原則1:使用 屬性(Poperty)代替可直接訪問的數據成員(Data Member)
- 原則2:偏愛 readonly 而不是 const
- 原則3:選擇 is 或 as 而不是強制類型轉換
- 原則4:使用條件特性(conditional attribute)代替 #if
- 原則5:總是提供 ToString()
- 原則6:理解幾個不同相等概念的關系
- 原則7:明白 GetHashCode() 的陷阱
- 原則8:優先考慮查詢語法(query syntax)而不是循環結構
- 原則9:在你的 API 中避免轉換操作
- 原則10:使用默認參數減少函數的重載
- 原則11:理解小函數的魅力
- 第二章 .NET 資源管理
- 原則12:選擇變量初始化語法(initializer)而不是賦值語句
- 原則13:使用恰當的方式對靜態成員進行初始化
- 原則14:減少重復的初始化邏輯
- 原則15:使用 using 和 try/finally 清理資源
- 原則16:避免創建不需要的對象
- 原則17:實現標準的 Dispose 模式
- 原則17:實現標準的 Dispose 模式
- 原則18:值類型和引用類型的區別
- 原則19:確保0是值類型的一個有效狀態
- 原則20:更傾向于使用不可變原子值類型
- 第三章 用 C# 表達設計
- 原則21:限制你的類型的可見性
- 原則22:選擇定義并實現接口,而不是基類
- 原則23:理解接口方法和虛函數的區別
- 原則24:使用委托來表達回調
- 原則25:實現通知的事件模式
- 原則26:避免返回類的內部對象的引用
- 原則27:總是使你的類型可序列化
- 原則28:創建大粒度的網絡服務 APIs
- 原則29:讓接口支持協變和逆變
- 第四章 和框架一起工作
- 原則30:選擇重載而不是事件處理器
- 原則31:用 IComparable&lt;T&gt; 和 IComparer&lt;T&gt; 實現排序關系
- 原則32:避免 ICloneable
- 原則33:只有基類更新處理才使用 new 修飾符
- 原則34:避免定義在基類的方法的重寫
- 原則35:理解 PLINQ 并行算法的實現
- 原則36:理解 I/O 受限制(Bound)操作 PLINQ 的使用
- 原則37:構造并行算法的異常考量
- 第五章 雜項討論
- 原則38:理解動態(Dynamic)的利與弊
- 原則39:使用動態對泛型類型參數的運行時類型的利用
- 原則40:使用動態接收匿名類型參數