どうも、ちょげ(@chogetarou)です。
List(リスト)の foreachループを逆順にする方法を紹介します。
方法

List(リスト)のforeachループを逆順にする方法は、2つあります。
Reverse()メソッド
1つは、Reverse()メソッドを使う方法です。
まず、リストからReverse()メソッドを呼び出します。
list.Reverse();
そして、Reverse()メソッドで呼び出したリストでforeachループします。
foreach (var i in list)
{
//ループ処理
}
使用例
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
List<int> list = new List<int>() { 1, 2, 3, 4, 5 };
list.Reverse();
foreach (var i in list)
{
Console.WriteLine(i);
}
}
}
Extensions
もう1つは、Extensionsを使う方法です。
まず、Extensionsのクラスを作成します。
Extensionsのクラス内に逆順のリストを返すメソッドを用意します。
static class Extensions
{
public static IEnumerable<T> ReverseList<T>(this List<T> items)
{
for (int i = items.Count-1; i >= 0; i--) {
yield return items[i];
}
}
}
そして、foreachのループ対象に用意したメソッドの戻り値を指定します。
foreach (var i in list.ReverseList())
{
//ループ処理
}
使用例
using System;
using System.Collections.Generic;
static class Extensions
{
public static IEnumerable<T> ReverseList<T>(this List<T> items)
{
for (int i = items.Count-1; i >= 0; i--) {
yield return items[i];
}
}
}
public class Example
{
public static void Main()
{
List<int> list = new List<int>() { 1, 2, 3, 4, 5 };
foreach (var i in list.ReverseList())
{
Console.WriteLine(i);
}
}
}

まとめ
List(リスト)のforeachループを逆順にする方法は、次の2つです。
- Reverse()メソッドを使う方法
- Extensionsを使う方法
コメント