sia*_*mak 4 .net arrays interface explicit-interface explicit-implementation
我的目标语言是带有.net框架的C#.我想知道这个主题背后的意义或原因是什么?
任何建议和建议都会得到高度赞赏.
编辑
为什么我问这个问题?因为现在,Array类的一些有用的成员就像索引一样在演员背后!我想知道如果微软分裂ilist接口会更好吗?
值得注意的是,您不必隐式或明确地实现整个界面 - 这是一个逐个成员的决定......我对不同的成员有不同的理由.我只是猜测(很少有人能在这里给出明确的答案)但是:
Count:我怀疑Length当你处理特定的数组类型时,属性有特殊的支持(我没有检查过IL)并且效率更高; 更清楚的是不向开发者展示它们IsFixedSize:如果你知道你正在处理数组,你知道大小是固定的IsReadOnly:如果你知道你正在处理数组,你知道它是可变的IsSynchronized:如果你知道你正在处理一个数组,你知道它没有同步Item:非泛型IList接口将公开接受/返回的索引器object; 特定类型的数组索引器更加类型安全(并且可能更直接地支持).访问器方法Array为具有rank!= 1的数组提供选项.SyncRoot:从来没有一个SyncRoot阵列Add,Insert,Remove,RemoveAt,Clear:你永远不能更改数组的大小,所以这些都不是合适的换句话说,如果您已经拥有这是一个数组的编译时信息,那么您已经知道答案或者肯定不能使用这些操作 - 或者有更好的方法.
其中的人可能是合理的:
Contains,CopyTo,IndexOf:这些可能都通过隐式接口实现暴露.我不知道为什么他们不是GetEnumerator(from IEnumerable)已通过隐式接口实现公开.