是否有可行的方法让foreach从最后到开始迭代整个集合?
int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 };
foreach (int i in fibarray)
{
System.Console.WriteLine(i);
}
如何与foreach反向显示?
答案 0 :(得分:4)
您可以使用Reverse()
:
int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 };
foreach (int i in fibarray.Reverse())
{
System.Console.WriteLine(i);
}
一般来说,foreach
必须支持任何IEnumerable
,它只支持集合中项目的前向枚举,作为Reverse()
的替代,您可以编写自己的优化实现,适用于{ {1}}提供索引器。
答案 1 :(得分:4)
using System.Linq;
foreach (int i in fibArray.Reverse())
但正常的for循环会更有效:
for( int index = fibArray.Length - 1; index >= 0; --index ) {
int i = fibArray[index];
...
}
答案 2 :(得分:2)
foreach (int i in fibarray.Reverse<int>())
{
System.Console.WriteLine(i);
}
答案 3 :(得分:0)
不。请改用for
,或在迭代前将集合修改为所需的顺序。
答案 4 :(得分:0)
foreach (int i in fibarray.Reverse)
System.Console.Writeline(i);
答案 5 :(得分:0)
我不认为默认情况下这是可能的。您需要使用具有该功能的迭代器创建自己的类:
答案 6 :(得分:0)
简而言之,没有。你无法改变foreach的行为。如果你想在不返回新数组的情况下这样做(比如调用Reverse),那么使用for循环。
int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 };
for (int i = fibarray.Length - 1; i > -1; i--) {
Console.WriteLine(i);
}