系统泛型委托
一、Action 封装一个方法,该方法只有一个参数并且不返回值
public delegate void Action<in T>(T obj);
List<Dog> list = GetDogList();
list.ForEach(new Action<Dog>(delegate(Dog d) { Console.WriteLine(d.Name); }));
list.ForEach(delegate(Dog d) { Console.WriteLine(d.Name); });
list.ForEach(d => { Console.WriteLine(d.Name); });
list.ForEach(d => Console.WriteLine(d.Name));
二、Predicate 表示定义一组条件并确定指定对象是否符合这些条件的方法。
public delegate bool Predicate<in T>(T obj);
list = list.FindAll(d => { return d.Age > 1; });
list = list.FindAll(d => d.Age > 1);
三、Comparison 表示比较同一类型的两个对象的方法。
// 返回结果:
// 一个有符号整数,指示 x 与 y 的相对值,如下表所示。 值 含义 小于 0 x 小于 y。 0 x 等于 y。 大于 0 x 大于 y。
public delegate int Comparison<in T>(T x, T y);
list.Sort((x, y) => x.Age - y.Age);
四、Func
public delegate TResult Func<in T, out TResult>(T arg);
IEnumerable<SmallDog> iList = list.Select<Dog, SmallDog>(new Func<Dog, SmallDog>(delegate(Dog d) { return new SmallDog { Name = d.Name }; }));
IEnumerable<SmallDog> iList1 = list.Select(d => { return new SmallDog { Name = d.Name }; });
var ilist2 = list.Select(d => new { Name = d.Name });
var ilist3 = list.Select(d => d.Name);
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步