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;
}
}
}