日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

《Effective C#》某些地方实在是对不起Effective这个词(I)

發布時間:2025/5/22 C# 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Effective C#》某些地方实在是对不起Effective这个词(I) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

翻了一半,到某些地方實在是看不下去了,鑒于這本書的名氣和傳說中的銷售量,這些地方拿出來給大家討論討論,對看了這本書而又沒發現這些東西的安達應該是有益的.

??????條款19:Prefer Defining and Implementing Interfaces to Inheritance。該條款教導我們,盡量定義并實現接口,而不是使用繼承。
??????實際上,抽象類具有一些接口不可能提供的特點。
??????1、接口只是提供了實現類提供的行為,而沒有提供這些行為的規范。如:一個調制解調器接口包括:撥號、發送數據、接收數據、掛斷這些行為,但是并沒有也沒辦法定義說發送數據之前,必須得先撥號,且撥號必須成功這樣的規范;但是抽象類不同,它可以定義它們。
??????2、在抽象類中增加一項功能,它的派生類就自動擁有了這些功能;這東西顯然通過接口實現不了——在接口中增加一向功能的后果是所有的實現類都得重寫,并重新編譯。
??????在實際項目中,碰到過這種讓人非常頭痛的情況。所以一般做法是提供接口,然后提供一個實現了這個接口的抽象類。派生類一般情況下是從抽象類派生,而不是直接去實現接口。

??????OK,現在我們再來看<Effective C#>中提到的證明使用接口而不使用抽象類的反例:
??????

public?void?PrintCollection(?IEnumerable?collection?)
{
??
foreach(?object?o?in?collection?)
??Console.WriteLine(?
"Collection?contains?{0}",
????o.ToString(?)?);
}


public?void?PrintCollection(?CollectionBase?collection?)
{
??
foreach(?object?o?in?collection?)
??Console.WriteLine(?
"Collection?contains?{0}",
????o.ToString(?)?);
}


??????書里面說了
“The second method is far less reusable. It cannot be used with Arrays, ArrayLists, DataTables, Hashtables, ImageLists, or many other collection classes. Coding the method using interfaces as its parameter types is far more generic and far easier to reuse.”大體意思是第二個方法可用性很差勁,它不能使用諸如:Arrays、ArrayLists、DataTables等等,使用第一種使用接口做參數方法就很好,用起來很方便。
??????現在的問題是:誰會這么寫代碼呢?作為一個方法的參數,它可能會有一些限制,比如上述的PrintCollection。對該方法的實現,唯一的限制是它得實現IEnumerable接口,只要入口參數實現了這個接口,方法就可以完成預定義的語義。第二種寫法擴大了限制的范圍,擺明了后果就是可用性降低。
??????定義一個方法的入口參數類型,一個很重要的原則就是:最小限制化。
??????該原則同樣適用于泛型類和泛型方法的定義。

??????它后面的例子犯的錯誤如出一轍。

??????吃飯時間到了,其他的忽悠稍后。^_^


-- 補充點東西,見文《補》

轉載于:https://www.cnblogs.com/cn_wpf/archive/2007/07/19/823626.html

總結

以上是生活随笔為你收集整理的《Effective C#》某些地方实在是对不起Effective这个词(I)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。