ICollection(T)接口的 Add-method已由LinkedList(T)-类显式实现。这个集合反而有 AddFirst- 和 AddLast- 方法(等等)。显式实现的方法映射到 AddLast 方法。这有一些缺点,恕我直言,根本没有好处。两个主要缺点是:
- 您不能在 LinkedList(T) 上使用集合初始化,因为它需要添加方法。
- 如果您在方法中使用了一个 List(T) 并希望将其更改为使用 LinkedList(T) ,则必须将所有对 Add 的调用更新为调用 AddLast 。
我的想法是,你永远不应该显式地实现接口成员,除非当你知道具体类型时它们根本没有意义。例如,如果您正在实施只读 ICollection(T),则应显式实施(并有效隐藏) Add-method。
是否还有其他不应该在框架中明确实现的方法示例?
附带说明:要解决第二个问题,您可以为 LinkedList(T) 类创建一个扩展方法“Add”。