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