Dar*_*rov 82
IEnumerable<T>是以下扩展或实现的基本接口.它不允许直接访问,只读.因此,只有在您打算迭代集合时才使用它.
ICollection<T>扩展IEnumerable<T>但另外允许添加,删除,测试集合中是否存在元素并获取元素的总数.它不允许通过索引直接访问元素.这将是一个O(n)操作,因为您需要开始迭代它,直到找到相应的元素.
IList<T>extends ICollection<T>(因此它继承了它的所有属性),但另外允许通过索引直接访问元素.这是O(1)操作.
List<T>只是IList<T>界面的具体实现.
在您的代码中,您应始终公开对象层次结构中最高的类型,该类型将与调用者的需求相对应.因此,例如,如果调用者只是枚举数据集,请使用IEnumerable<T>.如果他们需要通过索引直接访问元素IList<T>.
List<T>应仅在您的代码内部使用,但通常不会出现在您公开的方法的签名中.这为您提供了更大的灵活性,因为您可以轻松交换具体实施而不会违反合同.
| 归档时间: |
|
| 查看次数: |
22641 次 |
| 最近记录: |