zoukankan      html  css  js  c++  java
  • 泛型委托

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 泛型委托
    {
        public delegate int DelCompare<T>(T t1, T t2);
        // public delegate int DelCompare(object o1, object o2);
        class Program
        {
            static void Main(string[] args)
            {
                int[] nums = { 1, 2, 3, 4, 5 };
                int max = GetMax<int>(nums, Compare1);//第一个参数是Object sender,第二个参数是BoiledEventArgs e,这里没有用event事件封装delegate委托,直接传方法作委托参数
                Console.WriteLine(max);
    
                string[] names = { "abcdefg", "fdsfds", "fdsfdsfdsfdsfdsfdsfdsfsd" };
                string max1 = GetMax<string>(names, (string s1, string s2) =>//lamda表达式,可以理解成匿名函数的另一种写法
                {
                    return s1.Length - s2.Length;
                });
                Console.WriteLine(max1);
                Console.ReadKey();
            }
            public static T GetMax<T>(T[] nums, DelCompare<T> del)
            {
                T max = nums[0];
                for (int i = 0; i < nums.Length; i++)
                {
    
                    if (del(max, nums[i]) < 0)//if的括号里面del(max, nums[i])是直接调用运行委托对象,给委托传参(max, nums[i]),等价于传入并调用Compare1()方法
                    {
                        max = nums[i];
                    }
                }
                return max;
            }
    
    
            public static int Compare1(int n1, int n2)//这个方法只能用于比较泛型的T为int的情况,换另一种Type就必须另外写方法
            {
                return n1 - n2;
            }
        }
    }
  • 相关阅读:
    开题
    kafka介绍原理
    xxl-job
    多线程使用
    基础
    linux命令
    oracle id 自增
    feign调用远程服务 并传输媒体类型
    复杂sql mybatis查询
    开源easyExcel应用
  • 原文地址:https://www.cnblogs.com/blacop/p/5998621.html
Copyright © 2011-2022 走看看