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