当前位置: 代码迷 >> C# >> 为何LinkedList没有add方法
  详细解决方案

为何LinkedList没有add方法

热度:33   发布时间:2016-05-05 04:13:34.0
为什么LinkedList没有add方法
c#中既然实现了ICollection<T>,为什么没有实现它的add方法呢?
------解决思路----------------------
你打开VS,然后写个Interface,再写个类,继承接口,鼠标点在接口名称上时,会有两个选项,你试下就知道了,不是没实现,而是显示实现了,必须指明接口才能访问
------解决思路----------------------
引用:
Quote: 引用:

因为这个方法是显示声明的
ICollection<T>.Add这样子实现的

我现在的疑惑是,既然实现接口必须要实现它的方法,那么add方法不是应该在LinkedList类里面有个实现(重写)才对吗?


LinkedList类里边不是没有 Add,是有 Add 方法的,其源代码就写在 LinkedList 类内部。只不过你所使用某种“反编译”工具可能默认不会给你列出 “接口名称.方法名称”这种“方法覆盖”的方法,所以你一下子看不到。

Add 方法仍然是继承自(或者说实现)接口定义的。只不过它不让你用在多态中,所以它故意破坏多态性定义,声明为方法方法覆盖Add。

从面向对象编程角度看,c#(以及.net frameowork)中大量的这种声明可能是非常不自然的。但是15年前的微软不一定那么遵守OOPL规范,它可能当时更多地考虑到这样声明的“好处”——可以任性地阻断继承和多态,从而不用保证兼容性测试。
  相关解决方案