[C#]配列(Array)のforeachループを逆順にするには?

C#

どうも、ちょげ(@chogetarou)です。

配列(Array)の foreachループを逆順にする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

配列(Array)のforeachループを逆順にする方法は、2つあります。

Array.Reverse()

1つは、Array.Reverse()を使う方法です。

まず、配列からArray.Reverse()を呼び出します。

Array.Reverse()の引数には、配列を指定します。

list.Reverse();

そして、Array.Reverse()の引数に指定した配列をforeachでループします。

foreach (var i in array)
{
    //ループ処理
}

Array.Reverse()は、配列を逆順にします。

Array.Reverse()は、ループする配列自体に影響があるので注意してください。

使用例

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を使う方法

コメント

タイトルとURLをコピーしました