[C#]List(リスト)のforeachループを逆順にするには?

C#

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

List(リスト)の foreachループを逆順にする方法を紹介します。

スポンサーリンク

方法

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

List(リスト)のforeachループを逆順にする方法は、2つあります。

Reverse()メソッド

1つは、Reverse()メソッドを使う方法です。

まず、リストからReverse()メソッドを呼び出します。

list.Reverse();

そして、Reverse()メソッドで呼び出したリストでforeachループします。

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

Reverse()メソッドは、リストを逆順にするメソッドです。

Reverse()メソッドを呼び出すと、リスト自体に影響があるので注意してください。

使用例

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

コメント

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