/// <summary>
    /// Enumerableの拡張メソッド
    /// </summary>
    public static class EnumerableExtensions
    {
        public static void ForEach<T>(this IEnumerable<T> source,Action<T> action)
        {
            foreach (T element in source)
                action(element);
        }

        public static int ForEach<T>(this IEnumerable<T> list, Action<int, T> action)
        {
            var index = 0;

            foreach (var elem in list)
                action(index++, elem);

            return index;
        }

        public static T With<T>(this T item, Action<T> action)
        {
            action(item);
            return item;
        }
    }