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

配列(Array)のforeachループを逆順にする方法は、2つあります。
Array.Reverse()
1つは、Array.Reverse()を使う方法です。
まず、配列からArray.Reverse()を呼び出します。
Array.Reverse()の引数には、配列を指定します。
list.Reverse();
そして、Array.Reverse()の引数に指定した配列をforeachでループします。
foreach (var i in array)
{
//ループ処理
}
使用例
using System;
public class Example
{
public static void Main()
{
int[] numbers = new int[5] { 1, 2, 3, 4, 5 };
Array.Reverse(numbers);
foreach (var i in numbers)
{
Console.WriteLine(i);
}
}
}

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

まとめ
配列(Array)のforeachループを逆順にする方法は、次の2つです。
- Array.Reverse()を使う方法
- Extensionsを使う方法
コメント