C#学习之泛型委托:求数组最大值

首先写一个能求不同类型数组的委托与方法:(首先要理解委托的定义与会使用委托)

 public delegate int DelCompare(object  o1,object o2);
        static void Main(string[] args)
        {
         object[] num = { 1, 2, 3, 4, 6, 5, 8, };
          object max1 = GetMax(num,(Object o1,Object o2)=> { return (int)o1 - (int)o2; });
            Console.WriteLine(max1);
            Consonle.ReadKey();
        }
        static object GetMax(object[] obj,DelCompare del)
        {
            object max = obj[0];
            for (int i = 0; i < obj.Length; i++)
            {
                if (del(max, obj[i])<0)
                {
                    max = obj[i];
                }
            }
            return max;
            
        }

你会发现每次调用函数都会转换数据类型,并发生拆箱和装箱,使用泛型委托可以解决这个问题
将所有的object类型改为T;

public delegate int DelCompare<T>(T  o1,T o2);
        static void Main(string[] args)
        {
            int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int max= GetMax<int>(nums, (int i1, int i2) => { return i1 - i2; });
            Console.WriteLine(max);
            Console.ReadKey();
        }
        static T GetMax<T>(T[] obj,DelCompare<T> del)
        {
            T max = obj[0];
            for (int i = 0; i < obj.Length; i++)
            {
                if (del(max, obj[i])<0)
                {
                    max = obj[i];  
                }
            }
            return max;
        }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值