开发者社区 问答 正文

为什么数组实现IList?

请参阅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

展开
收起
保持可爱mmm 2020-02-07 01:00:02 654 分享 版权
1 条回答
写回答
取消 提交回答
  • 因为数组允许按索引快速访问,所以IList/ IList 是唯一支持此功能的集合接口。因此,也许您真正的问题是:“为什么没有索引器的常量集合的接口?” 对此,我没有答案。

    也没有用于集合的只读接口。我想念那些甚至超过带有索引器接口的恒定大小的东西。

    IMO应该有几个(通用)集合接口,具体取决于集合的功能。而且名称也应该有所不同,List因为带有索引器的东西确实是愚蠢的IMO。

    只是枚举 IEnumerable 只读但没有索引器(.Count,.contains等) 可调整大小,但没有索引器,即设置为(添加,删除等)当前 ICollection 索引器(indexer,indexof,...)只读 带有分度器的恒定大小(带setter的分度器) 带有分度器(插入,...)电流的可变大小 IList 我认为当前的收集接口设计不好。但是,由于它们具有告诉您哪些方法有效的属性(这是这些方法的约定的一部分),因此不会违反替代原理。

    2020-02-07 01:00:16
    赞同 展开评论
问答地址: