不净的IList的IEnumerator的提供列表的顺序?
-
13-09-2019 - |
题
我可以假设,我从IEnumerator
得到(通过调用从IList
接口GetEnumerator
法)IEnumerable
会给我的项目列表的顺序?
解决方案
您不能,因为IList的是一个接口,实现可以以任意顺序列举的项目。举例来说,我可以implemenent WeirdList:IList的,并且有它列举以任何方式的项目,包括非确定性。如果您在另一方面使用名单(T),它保证枚举它们存储在列表中的订单项目。
修改强>:这就是说,正如许多其他人指出,大多数实现将遵循列表(T)的语义。虽然这是不是你问什么;)
其他提示
在枚举应该给你访问的对象相对列表以它们的位置在存储器中这将是与使用该列表从0到长度<1在for循环中的分度器的内部。
编辑:我特别的问候是实现IList,应该任何其他人实现这些接口的实际实现可以是任何东西的.NET Framework类的回答。所以它取决于实施者。
是的,它会做完全是,至少任何像样的实现IList
的。一个好的IList
应该总是枚举其元件以相同的次序作为其中列表被编入索引。
List<int> list = new List<int> { 1, 1, 2, 3, 5, 8 };
IEnumerator<int> enumtor = list.GetEnumerator();
while (enumtor.MoveNext())
{
Console.Write(enumtor.Current);
}
打印112358
。
这将取决于与IList
的实施不隶属于 StackOverflow