[C#]配列(Array)の特定のインデックスの要素を削除するには?

C#

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

配列(Array)の指定したインデックスの要素を削除する方法を紹介します。

スポンサーリンク

方法

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

配列(Array)の特定のインデックスの要素を削除する方法は、2つあります。

リスト

1つは、リストを使う方法です。

まず、配列をToList()でリストに変換します。

変換したリストからRemoveAt()を呼び出し、RemoveAt()の引数にインデックスを指定します。

var list = array.ToList();
		
list.RemoveAt(index);

そして、リストをToArray()で配列に変換し、元の配列に代入します。

array = list.ToArray();

ここまでの処理で、配列からRemoveAt()の引数に指定したインデックスを削除できます。

リストを使うには「System.Collection.Generic」、ToList()を使うにはSystem.Linqを導入する必要があります。

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

使用例

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

コメント

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