dynamicの間違った使い方

新しい機能を見つけたら、まず、一発ネタをやるのが恒例(?)なので、Genericで汎用アルゴリズム(Sum)を書いてみます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DynamicSample
{
    class Program
    {
        // 汎用的に使えるSum
        static T Sum<T>(params T args)
        {
            dynamic sum = default(T);

            foreach (T arg in args)
            {
                dynamic x = arg;
                sum += arg;
            }

            return sum;
        }

        static void Main(string args)
        {
            // int
            Console.WriteLine (Sum(1,2,3,4,5,6,7,8,9,10));
            // double
            Console.WriteLine (Sum(0.5, 1.5, 2.5, 3.5, 4.5));
            // string
            Console.WriteLine (Sum("H", "e", "l", "l", "o", ","," ", "W", "o", "r", "l", "d", "!"));

            // でも、パフォーマンスは期待できないはず・・・
        }
    }
}

/*
55
12.5
Hello, World!
 */

数値にも文字列にもSumが使えます。もちろん、dynamicの本来の使用目的はこれではありません。(^^;