[C#] 配列をジェネリックコレクションのListに変換する

2020-05-03


はじめに

本記事では、配列をList<T>に変換する方法をご紹介します。

System.Collections.Generic.Listクラスは配列に非常によく似た機能を持つクラスです。

格納できる要素の数が固定である配列とは異なり、動的に要素の数を増減できます。

より詳しく知りたい方は、List<T> クラス を参照ください。

配列をList<T>に変換する

/// <summary>
/// メインクラス
/// </summary>
/// <param name="args"></param>
public static void Main(string[] args)
{
    List<string> list = ConvertList<List<string>>(new[] { "1", "a", "b" });
    Console.WriteLine(list.GetType());
    Console.WriteLine(string.Join(", ", list));
}

/// <summary>
/// 配列オブジェクトをListに変換する
/// </summary>
/// <param name="obj">配列」オブジェクト</param>
public static T ConvertList<T>(object obj)
{
    if (obj is object[])
    {
        object[] objects = (object[]) obj;
        IList list = (IList) Activator.CreateInstance(typeof(T));

        foreach (object o in objects)
        {
            list.Add(o);
        }
        return (T) list;
    }

    return default(T);
}

上記を実行すると下記の様になります

System.Collections.Generic.List`1[System.String]
1, a, b

問題なく、配列オブジェクトをListに変換することができました。

是非試してみてください。