如何使用C#LinkedList
执行以下C ++代码段的等效操作?
std::list<MyClass*>::reverse_iterator itr(it);
for(; itr != MyList.rend(); ++itr)
答案 0 :(得分:16)
作为一次性,类似于:
var el = list.Last;
while (el != null) {
// use el.Value
el = el.Previous;
}
如果您经常这样做,可能会使用类似的迭代器块来产生所有值:
public static IEnumerable<T> Reverse<T>(this LinkedList<T> list) {
var el = list.Last;
while (el != null) {
yield return el.Value;
el = el.Previous;
}
}
然后:
foreach(var val in list.Reverse()) {
// use val
}