こんにちは、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