泛型委托

来源:互联网 发布:怎么用python画图 编辑:程序博客网 时间:2024/06/06 14:18

12

namespace ConsoleTest{    class Program    {        //public delegate int DelCompare<T>(T o1, T o2);//定义一个泛型委托,这个委托返回值是int类型,带两个参数        static void Main(string[] args)        {            string[] strs = { "abc", "EDdee", "edd", "DEFrr" };            int[] ss = { 2, 8, 9, 63, 12, 3 };            var dt = GetArrMaxValue<string>(strs, (x, y) =>            {                //如果参数是string类型就比较HashCode值                return x.GetHashCode() - y.GetHashCode();            });            var dt2 = GetArrMaxValue<int>(ss, (x, y) =>            {                return x - y;//如果是int类型就直接相减            });            Console.ReadKey();        }        //这个Func<T[] ,T> fun 就是一个泛型委托,这个委托的参数是一个T类型的数组,返回值是T类型        public static T GetArrMaxValue<T>(T[] nums, Func<T, T, int> fun)        {            T max = nums[0];            for (int i = 0; i < nums.Length; i++)            {                //这里的fun(max, nums[i])即 执行委托,即计算max-nums[i]的到的值,然后用这个值与0比较大小                if (fun(max, nums[i]) < 0)                {                    max = nums[i];                }            }            return max;        }    }}