转译js数组的reduce函数为c#代码

来源:互联网 发布:mac 玩游戏卡 编辑:程序博客网 时间:2024/05/19 09:48

js数组的reduce是干什么用的?

将js数组的reduce转译为c#代码

public delegate TReturn IEnumerableReduce<TReturn, Item>(TReturn previous, Item currentItem);public static class EnumerableExtensions{     /// <summary>        /// 累加所有元素,指定累加方式        /// </summary>        /// <typeparam name="TReturn">返回值类型</typeparam>        /// <typeparam name="Item">集合元素类型</typeparam>        /// <param name="list"></param>        /// <param name="enumerableReduce"></param>        /// <param name="initialValue"></param>        /// <returns></returns>        public static TReturn Reduce<TReturn, Item>(this IList<Item> list, IEnumerableReduce<TReturn, Item> enumerableReduce, TReturn initialValue = default(TReturn))        {            var result = default(TReturn);            if (initialValue == null)            {                initialValue = default(TReturn);            }            var previousValue = initialValue;            foreach (var item in list)            {                result = enumerableReduce(previousValue, item);                previousValue = result;            }            return result;        }}

示例

static void Main(string[] args)        {            var list = new List<int> {                 1,2,3            };            Console.WriteLine(list.Reduce<int, int>((p, c) => {                return p + c;            }));            var list2 = new List<Student>{               new Student{No=1,Name="张三"},               new Student{No=2,Name="李四"}           };            Console.WriteLine(list2.Reduce<string, Student>((p, c) => {                return p += string.Format("{0}:{1};", c.No, c.Name);            }));        }class Student    {        public int No { get; set; }        public string Name { get; set; }    }

输出结果截图


0 0
原创粉丝点击