情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

C#でデータをバイナリに変換するプログラムをdynamicを用いて簡潔に書く

C#4.0で追加されるdynamicキーワードを使えば、前記事CREABinaryEncoder.Encodeメソッドは以下のように非常に簡潔に記述可能です。また、型は実行時に調べられるので、List<List<T>>Dictionary<List<T>, List<Dictionary<U, V>>など、どんなに複雑なリスト構造でも正常に動作します。

dynamicを使っているので当然ながら実行速度は遅くなります。といっても、数倍程度の違いなのであまり気にする必要はないのかもしれません。

public static class CREABinaryEncoder
{
    public static byte[] Encode(params dynamic[] parameters)
    {
        using (MemoryStream memoryStream = new MemoryStream())
        {
            foreach (var parameter in parameters)
                CREABinaryEncoderHelper.Write(parameter, memoryStream);

            return memoryStream.ToArray();
        }
    }
}
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-C#