どうも、ちょげ(@chogetarou)です。
配列(Array)の指定したインデックスの要素を削除する方法を紹介します。
方法

配列(Array)の特定のインデックスの要素を削除する方法は、2つあります。
リスト
1つは、リストを使う方法です。
まず、配列をToList()でリストに変換します。
変換したリストからRemoveAt()を呼び出し、RemoveAt()の引数にインデックスを指定します。
var list = array.ToList();
list.RemoveAt(index);
そして、リストをToArray()で配列に変換し、元の配列に代入します。
array = list.ToArray();
ここまでの処理で、配列からRemoveAt()の引数に指定したインデックスを削除できます。
使用例
using System;
using System.Collections.Generic;
using System.Linq;
public class Example
{
public static void Main()
{
int[] numbers = new int[5] { 1, 2, 3, 4, 5 };
var list = numbers.ToList();
list.RemoveAt(3);
numbers = list.ToArray();
foreach (var i in numbers) {
Console.WriteLine(i);
}
}
}
Where()
もう1つは、System.LinqのWhere()を使う方法です。
まず、System.Linqを導入します。
using System.Linq;
次に、配列からWhere()を呼び出します。
Where()の引数に、引数を2つ持つラムダ式を指定します。
そして、ラムダ式で「第2引数 != インデックス」のような条件式を返します。
あとは、Where()からToArray()を呼び出し、ToArray()の戻り値を配列に代入します。
array = array.Where((value, index) => index != インデックス).ToArray();
上記のコードは、配列から「!=」の右側のインデックスを削除します。
使用例
using System;
using System.Linq;
public class Example
{
public static void Main()
{
int[] numbers = new int[5] { 1, 2, 3, 4, 5 };
numbers = numbers.Where((value, index) => index != 3).ToArray();
foreach (var i in numbers) {
Console.WriteLine(i);
}
}
}

まとめ
配列(Array)の特定のインデックスを削除する方法は、次の2つです。
- リストを使う方法
- System.LinqのWhere()を使う方法
コメント