【发布时间】:2012-05-02 08:04:49
【问题描述】:
我对@987654321@中的订单有疑问。
据我所知,遍历 IEnumerable 是伪代码,可以用以下方式编写:
while (enumerable.HasNext())
{
object obj = enumerable.Current;
...
}
现在,假设需要对排序集合进行操作。在这种情况下可以使用 IEnumerable 还是尝试其他支持索引的方法(即IList)更好?
换句话说:IEnumerable 的合同是否对订单做出任何保证?
因此,IEnumerable 不是保证排序的通用接口的正确含义。新的问题是什么接口或类应该用于不可变集合的顺序? ReadonlyCollection? IList?两者都包含Add()方法(甚至前者没有实现)。
我自己的想法:IEnumerable 不提供任何关于订购的保证。正确的实现可以在不同的枚举中以不同的顺序返回相同的元素(考虑 SQL 查询)
我知道 LINQ First(),但是如果 IEnumerable 没有说明它的排序,那么这个扩展就毫无用处了。
【问题讨论】:
标签: c# .net collections ienumerable