我可以假设IEnumerator
从IList
(通过调用GetEnumerator
界面中的IEnumerable
方法)得到的{{1}}将按顺序提供给我的项目清单?
答案 0 :(得分:8)
您不能,因为IList是一个接口,并且实现可以按任何顺序枚举项目。例如,我可以实现WeirdList:IList,并以任何方式枚举项目,包括非确定性。另一方面,如果使用List(T),它可以保证按照它们存储在列表中的顺序枚举项目。
编辑:正如许多其他人所指出的那样,大多数实现都将遵循List(T)的语义。虽然那不是你问的;)
答案 1 :(得分:0)
是的,至少对于任何体面的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
。
答案 2 :(得分:0)
枚举器应该允许您访问列表中相对于它们在内存中的位置的对象,这与使用从0到Length&lt;的列表的索引器相同。 1 for a for循环。
编辑:我特别回答了实现IList的.NET框架类,如果任何其他人实现这些接口,他们的实际实现可能就是任何事情。所以它取决于实施者。
答案 3 :(得分:-1)
这取决于IList的实现