我在通用列表中有一组对象。
我想知道导航这个系列的最佳方法是什么。 我想做“MoveNext”,“MovePrevious”等操作。
基本上我的收藏是流程中的一些步骤,我希望能够沿着步骤移动。
在Sql中是否存在与C#等效的MoveNext和MovePrevious
答案 0 :(得分:6)
您可以使用LinkedList<T>课程 每个元素都有对前一个元素和下一个元素的引用 有关示例,请查看文档链接。
答案 1 :(得分:3)
只需在列表中添加Current
媒体资源即可。
未经测试。只是看起来正确。
并且你应该根据自己的喜好实施一个警卫,例如:起始指数。你应该从-1开始并需要一个movenext吗?由你决定
public class BackAndForthList<T> : List<T>
{
private int _current = 0;
public T Current
{
get { return this[_current]; }
}
public void MoveNext()
{
_current++;
if (_current >= Count)
{
_current = 0;
}
}
public void MovePrevious()
{
_current--;
if (_current < 0)
{
_current = Count - 1;
}
}
}
答案 2 :(得分:1)
为了继续前进,您可以使用枚举器:
list.GetEnumerator().MoveNext()
答案 3 :(得分:0)
我不知道内置的功能可以做到这一点,但你可以通过拥有一个保存索引的变量来做到这一点。当你想要MoveNext然后i ++,当你想要MovePrevious时使用i--(假设你使用i作为变量)。
编辑:我错了。这是MSDN的一个片段,可以满足您的要求。我没有仔细研究过它,但它出现在关于StringCollections 的文章中public static void PrintValues2( StringCollection myCol ) {
StringEnumerator myEnumerator = myCol.GetEnumerator();
while ( myEnumerator.MoveNext() )
Console.WriteLine( " {0}", myEnumerator.Current );
Console.WriteLine();
}
答案 4 :(得分:0)
使用BindingList
或BindingSource
或从中获取您自己的。