【C#】配列の空要素(null)を一括削除

この記事では、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#入門速報

コメント

  1. hoge より:

    var array = new[] { “沖田”, null, null, “モードレッド” };
    の場合nullは一つしか消えません。
    nullが一つ残ったままになります。
    出力結果は「沖田,null,モードレッド」になります。

    記事を修正した方がいいと思います。

  2. fuga より:

    list.RemoveAll(item => item == null);で一括で消せると思います。