如何倒序循环遍历一个列表?

3

这将从第一个索引0、1、2、3……循环。

我想从最后一个索引51、50、49……开始循环。

for (int x = 0; x < data.Count(); x++)

我需要从末尾开始循环遍历列表。

for(int i = data.Count(); i-->0;){} - Jite
2个回答

10
你需要从count -1开始,将条件改为大于或等于零,并使用递减符号--而不是递增。阅读此MSDN文章(C#参考)以更好地理解for循环。
for (int x = data.Count()-1 ; x >=0 ; x--)

3

如果你只想访问每个项,可以这样做:

foreach (var item in data.Reverse())
{
    /* do stuff with each item */
}

在99.99%的情况下,代码的可读性比性能影响更为重要。


注意:这会增加计算反向列表的额外开销。(个人而言,我只喜欢在向用户显示列表时使用“Reverse”) - Sayse
1
@Sayse - 我经常回答与性能问题相关的问题,但很少看到像这样的问题引起任何实质性的性能问题。在99.99%的情况下,代码的可读性将超过性能影响。 - Enigmativity
我同意这可能只是一个非常小的性能影响,但仍然存在性能影响,我希望大多数程序员都能理解反向for循环的样子。 - Sayse
1
+1 for Enigmativity. 除非你在处理非常大的数据结构,否则性能影响可以忽略不计,并且它肯定更易读。 - NeilMacMullen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接