在我的c#app中,我有一个列表,我用一个Enumerator导航。它非常适合在列表中前进,但Enumerator类没有MoveBack方法。
是否有不同的类具有MoveBack方法,或者我是否需要自己编写?
答案 0 :(得分:1)
按定义使用IEnumerator接口的任何枚举器必须在第一个元素之前启动,并在集合中向前迭代。简而言之:它们不支持向后遍历。
如果你想要向后遍历,你需要编写自己的枚举函数,让你可以在任何你想要的地方开始。
答案 1 :(得分:0)
你可以反转列表并迭代它。或者,对于某些类,您可以从头到尾执行for循环并使用Element()。
答案 2 :(得分:0)
有时我不得不用某些只提供前向迭代器的C ++ STL容器处理这种情况。如果您事先知道需要向后移动多少元素,则可以执行以下操作:
IEnumerator<int> e1 = yourListOfInt.GetEnumerator();
IEnumerator<int> e2 = e1;
for (int i = 0; i < 3; ++i) e2.MoveNext();
现在e1是e2之前的三个元素。这是我几年前在C ++中唯一的解决方案。
但是如果您使用的是列表,我假设您可以通过索引访问它?