C# リスト(配列)を逆順にする( foreach に使える)

C# Tips PROGRAMMING

こんにちは、mickです。

C# を使ってて、リストや配列の中身(要素)って反転できるんだっけなー、と見てたらちゃんと用意がありました。ありがたい。

リストや配列の中身(要素)を反転させる方法は大きく2つ

リストや配列の中身(要素)を反転させる方法は、大きく2つあります。まとめるとーー

  • 反転した結果を新しいインスタンスで得る
  • インスタンスの中身そのものを反転する

元のインスタンスを触りたくないときは、前者の方法を。元のインスタンスそのものを触りたいときには、後者の方法をとるのが基本かと思います。

List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] ary = list.ToArray();

List<int> newList = Enumerable.Reverse(list).ToList()
int[] newAry = ary.Reverse().ToArray()

インスタンスの中身(要素)そのものを反転するのはーー

Array.Reverse(ary);
list.Reverse();

実際に使うサンプルを載せておきます。

using System;
using System.Collections.Generic;
using System.Linq;

namespace ListReverseTest
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            int[] ary = list.ToArray();

            // listやaryの中身は変わらない。反転したインスタンスを返す
            foreach (int a in list)
            {
                Console.WriteLine(a);
            }
            Console.WriteLine("--------- Reverse List ---------");
            foreach(int a in Enumerable.Reverse(list).ToList())
            {
                Console.WriteLine(a);
            }
            Console.ReadKey();
            Console.WriteLine("--------- Reverse Array ---------");
            foreach(int a in ary.Reverse().ToArray())
            {
                Console.WriteLine(a);
            }
            Console.ReadKey();

            // インスタンスの中の要素が反転する
            Array.Reverse(ary);
            list.Reverse();
            Console.WriteLine("--------- Reverse Array ---------");
            foreach (int a in ary)
            {
                Console.WriteLine(a);
            }
            Console.WriteLine("--------- Reverse List ---------");
            foreach (int a in list)
            {
                Console.WriteLine(a);
            }
            Console.ReadKey();
        }
    }
}
1
2
3
4
5
6
7
8
9
10
--------- Reverse List ---------
10
9
8
7
6
5
4
3
2
1
--------- Reverse Array ---------
10
9
8
7
6
5
4
3
2
1
--------- Reverse Array ---------
10
9
8
7
6
5
4
3
2
1
--------- Reverse List ---------
10
9
8
7
6
5
4
3
2
1

List<T>.Reverse メソッド | Microsoft

記事を読んでくれて嬉しいです。
今日もありがとうございました。

初稿 2021/12/21