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