C# 泛型和委托

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 泛型委托
{
    //委托中使用泛型
    public delegate int DeleCompare<T>(T t1,T t2); 
    class Program
    {
        static void Main(string[] args)
        {
            int[] nums = { 1, 2,10, 3, 4, 5 };
            object maxInt = GetMax<int>(nums, CompareInt);

            string[] names = { "ac", "dgjd", "dsfjeirjgrioeg","cdd" };
            //1 使用匿名函数
            //object maxString = GetMax<string>(names, delegate(string s1, string s2)
            //{
            //    return s1.Length - s2.Length;
            //});

            //2 使用lamda表达式
            object maxString = GetMax<string>(names, (string s1, string s2) =>
            {
                return s1.Length - s2.Length;
            });

            Console.WriteLine(maxInt);
            Console.WriteLine(maxString);

            Console.ReadKey();
        }

        public static T GetMax<T>( T[] nums,DeleCompare<T> dele)
        {
            T max = nums[0];

            for( int i = 0 ; i < nums.Length; i++)
            {
                if(dele(max,nums[i]) < 0)
                {
                    max = nums[i];
                }
            }

            return max;
        }

        public static int CompareInt(int num1,int num2)
        {
            return num1 - num2;
        }
    }
}

 

posted @ 2017-11-14 09:49  mCat  Views(260)  Comments(0Edit  收藏  举报