using System;
namespace 泛型委托
{
//求任意数组的最大值
public delegate int DeleProcess<T>(T o1, T o2);
class Program
{
static void Main(string[] args)
{
int[] nums = new int[] { 1, 2, 3, 4, 5 };
int max = GetMax(nums, (int o1, int o2) =>
{
return o1 - o2;
});
Console.WriteLine("int数组中的最大值:{0}",max);
/*****************************************************************/
string[] strs = new string[] { "asdf", "asdfghjkl","qwertyuiopqweritewoi"};
string str = GetMax(strs, (string str1, string str2) =>
{
return str1.Length - str2.Length;//返回int类型
});
Console.WriteLine("string数组中的最长的字符串:{0}", str);
Console.ReadKey();
}
/// <summary>
/// 获得数组中的最大值。
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="nums">需要计算的T类型的数组</param>
/// <param name="del">委托方法</param>
/// <returns></returns>
public static T GetMax<T>(T[] nums, DeleProcess<T> del)
{
T max = nums[0];
for (int i = 1; i < nums.Length; i++)
{
//传进来一个比较的方法
if (del(max, nums[i]) < 0)
{
max = nums[i];
}
}
return max;
}
}
}
泛型委托和Lamda表达式的应用示例
最新推荐文章于 2022-03-26 17:57:55 发布