如标题所示,有谁知道为什么ICollection
接口不包含 Add 方法?ICollection<T>
通用版本, 有一个Add
但ICollection
没有,这似乎很奇怪。任何对此有更深入了解的人都会非常有帮助。
至于我为什么关心 - 不幸的是,构建 SharePoint 的开发人员从未了解过泛型,因此 API 中的每个集合都是基于ICollection
. 我想附加几个扩展方法,ICollection
其中包括添加到集合中,但这似乎是不可能的(至少在没有反射的情况下是不可能的)。
编辑:
相当多的人猜测原因是因为ICollection.Add
需要一个Object
,因此不是类型安全的。事实并非如此。IList
有一个Add
采用Object
. 您只需要在采用Object
.
数组实现的论点,ICollection
因此它不能有一个Add
也不成立。如果ICollection
有一个Add
方法,它只需要在数组上显式实现并抛出一个异常(正如数组当前实现的许多方法一样)。
我真的希望有人参考其中一位设计师的解释。