请参阅System.Array类的定义
public abstract class Array : IList, ... 从理论上讲,我应该能够写点东西并开心
int[] list = new int[] {}; IList iList = (IList)list; 我也应该能够从iList调用任何方法
ilist.Add(1); //exception here 我的问题不是为什么我会得到异常,而是为什么Array实现了IList?
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
因为数组允许按索引快速访问,所以IList/ IList 是唯一支持此功能的集合接口。因此,也许您真正的问题是:“为什么没有索引器的常量集合的接口?” 对此,我没有答案。
也没有用于集合的只读接口。我想念那些甚至超过带有索引器接口的恒定大小的东西。
IMO应该有几个(通用)集合接口,具体取决于集合的功能。而且名称也应该有所不同,List因为带有索引器的东西确实是愚蠢的IMO。
只是枚举 IEnumerable 只读但没有索引器(.Count,.contains等) 可调整大小,但没有索引器,即设置为(添加,删除等)当前 ICollection 索引器(indexer,indexof,...)只读 带有分度器的恒定大小(带setter的分度器) 带有分度器(插入,...)电流的可变大小 IList 我认为当前的收集接口设计不好。但是,由于它们具有告诉您哪些方法有效的属性(这是这些方法的约定的一部分),因此不会违反替代原理。