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