作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的目标语言是带有 .net 框架的 C#。我想知道这个话题背后的意义或原因是什么?
任何意见和建议将受到高度赞赏。
编辑
为什么我问这个问题?
因为现在,数组类的一些有用的成员,比如 index of 正在燃烧
在类型转换后面!我想知道如果微软拆分 ilist 界面会更好吗?
最佳答案
值得注意的是,您不必隐式或显式地实现整个接口(interface) - 这是逐个成员的决定......我对不同的成员有不同的原因。我只是猜测(很少有人可以在这里给出明确的答案)但是:
Count
: 我怀疑Length
当您处理特定的数组类型(我没有检查过 IL)时,属性有特殊的支持并且效率更高;不向开发人员展示两者更清晰IsFixedSize
: 如果你知道你正在处理一个数组,你就知道它的大小是固定的 IsReadOnly
: 如果你知道你正在处理一个数组,你就知道它是可变的 IsSynchronized
: 如果你知道你正在处理一个数组,你就知道它没有同步 Item
: 非泛型 IList
接口(interface)将公开接受/返回 object
的索引器;特定类型的数组索引器更安全(同样,可能更直接地支持)。 Array
中的访问器方法为 rank != 1 的数组提供选项。SyncRoot
: 从来没有 SyncRoot
对于数组 Add
, Insert
, Remove
, RemoveAt
, Clear
: 你永远不能改变数组的大小,所以这些都不合适Contains
, CopyTo
, IndexOf
:这些都可以通过隐式接口(interface)实现暴露出来。我不知道为什么他们不是GetEnumerator
(来自
IEnumerable
)已经通过隐式接口(interface)实现公开。
关于.net - 为什么 Array 类显式地而不是隐式地实现 Ilist 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9108344/
我是一名优秀的程序员,十分优秀!