foreach
Collections オブジェクトを逆の順序でトラバースするステートメントを持つことは可能ですか?
foreach
声明ではない場合、別の方法はありますか?
foreach
Collections オブジェクトを逆の順序でトラバースするステートメントを持つことは可能ですか?
foreach
声明ではない場合、別の方法はありますか?
次のように、通常のfor
ループを逆方向に使用できます。
for (int i = collection.Count - 1; i >= 0 ; i--) {
var current = collection[i];
//Do things
}
LINQ を使用することもできます。
foreach(var current in collection.Reverse()) {
//Do things
}
ただし、通常のfor
ループはおそらく少し高速になります。
コレクションでReverse()を呼び出すだけです。
foreach(var item in collection.Reverse()) { ... }
3.5 を使用している場合、LINQ に Reverse() メソッドがあるように見えます。これは逆の順序で繰り返されるのではなく、リスト全体を逆にするため、foreach を実行できます。
または、単純な for ステートメントを使用できます。
for(int i = list.Count -1; i >= 0; --i)
{
x = list[i];
}
または、コレクションが IEnumerable であり、ランダム アクセスがない場合は、System.Linq の IEnumerable.Reverse() メソッドを使用して、通常どおり forarch を適用します。
using System.Linq;
foreach (var c in collection.Reverse()) {
}
List<string> items = new List<string>
{
"item 1",
"item 2",
"item 3",
"item 4",
};
lines.AsEnumerable().Reverse()
.Do(a => Console.WriteLine(a), ex => Console.WriteLine(ex.Message), () => Console.WriteLine("Completed"))
.Run();