この記事では、C#で配列の空要素(null)のみを一括で削除する方法についてソースコード付きで紹介します。
空要素(null)を一括削除
配列から空要素(null)のみを除去したい場合があります。
しかし、配列の要素数は固定なので、特定の要素のみ削除できません。
そこで、要素数を変動できるリストに一度変換し、そこで空要素のみ削除してから配列に戻してやります。
| – | 手順 |
|---|---|
| ① | 配列をリストに変換 |
| ② | リストのRemoveメソッドでnull要素のみ削除 |
| ③ | リストを配列に変換する。 |
ソースコード
サンプルプログラムのソースコードです。
方法1
※2つ以上nullがある場合は先頭に近いnull要素1つだけ削除します。
using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
// 配列の宣言
var array = new[] {"沖田", null, "モードレッド"};
// 配列→リスト
List<string> list = new List<string>(array);
// 空要素(null)を削除
list.Remove(null);
// リスト→配列
var array2 = list.ToArray();
// 配列の中身表示
foreach (var a2 in array2) Console.WriteLine(a2); // 沖田, モードレッド
}
}
方法2
※2つ以上nullがある場合も全てのnull要素を削除します。
using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
// 配列の宣言
var array = new[] {"沖田", null, null, "モードレッド"};
// 配列→リスト
List list = new List(array);
// 空要素(null)を一括削除
list.RemoveAll(item => item == null);
// リスト→配列
var array2 = list.ToArray();
// 配列の中身表示
foreach (var a2 in array2) Console.WriteLine(a2); // 沖田, モードレッド
}
}

404 NOT FOUND | C#入門速報

コメント
var array = new[] { “沖田”, null, null, “モードレッド” };
の場合nullは一つしか消えません。
nullが一つ残ったままになります。
出力結果は「沖田,null,モードレッド」になります。
記事を修正した方がいいと思います。
list.RemoveAll(item => item == null);で一括で消せると思います。
※fuga様
ご助言ありがとうございます。
おかげで一括削除できました。