标签:
public class Data { public int ma = 1; public int mb = 2; public int mc = 0; static int count = 0; public Data() { count++; ma = count; } } //一句话删除满足要求的集合 Asm.RemoveAll((Data md) => { return md.ma % 3 == 0 ? true : false; }); //等同于 Asm.RemoveAll(Need); bool Need(Data md) { if (md.ma % 3 == 0) return true; else return false; }
Asm.RemoveAll(System.Predicate<T>)传入其中的委托原型和System.Func<T,TR>是相同的,只是名字不同.
Asm.RemoveAll(System.Comparison<in T>)传入其中的委托原型和System.Func<TX,TY,int>是相同的,只是名字不同.这个初一看,还很难理解为什么System.Comparison<in T>看起来只是传入了一个参数,但是实际对应的委托原型却是两个参数,这个只有靠记着了,而且是通过返回的数字值的正负来判断排序方式,比较抽象.
Asm.Sort ((Data mx,Data my)=> //该方法实现的是将Asm由大到小的排序 { if (mx.mb > my.mb) return -1; //返回-1表示mx被认定排序值小于my,所以排在前面 else if (mx.mb < my.mb) return 1; //返回1 表示mx被认定排序值大于my,所以排在后面. else return 0; });
C#中的list的System.Predicate<in T>和System.Comparison<in T>的应用
标签:
原文地址:http://www.cnblogs.com/flyant/p/4356657.html