この記事では、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, "モードレッド"}; // 配列→リスト Listlist = 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様
ご助言ありがとうございます。
おかげで一括削除できました。