ICollection(T)接口的添加方法已由LinkedList(T)-類明確實施。這個集合取而代之的是AddFirst和AddLast方法(等等)。明確實現的方法映射到AddLast方法。這有一些缺點,恕我直言,沒有任何好處。這兩個主要缺點是:LinkedList(T)添加方法
- 因爲它需要一個Add-method,所以不能在LinkedList(T)上使用集合初始化。
- 如果您在方法中使用了一個List(T),並且想要將其更改爲使用LinkedList(T),您需要將所有調用更新爲Add來調用AddLast。
我想它的方式是,你應該永遠明確實現接口的成員,除非他們做沒有任何意義,當你知道具體類型。例如,如果您正在實現只讀ICollection(T),則應該明確實施Add-method(並且實際上隱藏)。
是否還有其他已明確實施的方法應該不在框架中?
附註:要解決第二個問題,您可以爲LinkedList(T)類創建一個擴展方法「Add」。
我想你的意思是說它對開發者來說會含糊不清?問題不在於你無法添加範圍,問題是該接口與其他ICollections不同,因此除非強制轉換爲接口,否則它們是不可互換的。 – 2009-02-06 11:34:30