我的目标语言是C#和.NET框架。我想知道这个主题背后的重点或原因是什么?非常感谢任何建议和建议。编辑我为什么问这个问题? 因为现在,一些Array类的有用成员(如索引)被隐藏在转换后面!!! 我想知道如果微软分割ilist接口会不会更好?
值得一提的是,你不需要隐式或显式地实现整个接口 - 这是逐成员决定的... 我猜测不同的成员会有不同的原因。我只是猜测(很少有人能在这里给出明确的答案),但可能的原因如下:- Count:我怀疑当您处理特定的数组类型时,Length属性具有特殊支持(我没有检查IL)并且更有效率;将两个都呈现给开发人员是不好的。 - IsFixedSize:如果您知道正在处理一个数组,则知道大小是固定的。 - IsReadOnly:如果您知道正在处理一个数组,则知道它是可变的。 - IsSynchronized:如果您知道正在处理一个数组,则知道它未同步。 - Item:非泛型IList接口将公开接受/返回对象的索引器;特定类型的数组索引器更加类型安全(而且可能直接获得支持)。Array中的访问器方法提供了具有不等于1的秩的数组的选项。 - SyncRoot:数组永远没有SyncRoot。 - Add、Insert、Remove、RemoveAt、Clear:您永远无法更改数组的大小,因此这些都不适用。换句话说,如果您已经拥有编译时信息,说明这是一个数组,那么您已经知道答案或绝对无法使用这些操作 - 或者有更好的方法来做到这一点。可能合理的是:- Contains、CopyTo、IndexOf:这些都可以通过隐式接口实现来公开。我不知道为什么没有。 - GetEnumerator(来自IEnumerable)已经通过隐式接口实现公开了。