您的位置:首页 > 编程语言 > C#

C#中的list的System.Predicate<in T>和System.Comparison<in T>的应用

2015-03-22 02:07 495 查看
publicclassData
{
publicintma=1;
publicintmb=2;
publicintmc=0;
staticintcount=0;
publicData()
{
count++;
ma=count;
}
}

//一句话删除满足要求的集合
Asm.RemoveAll((Datamd)=>{returnmd.ma%3==0?true:false;});

//等同于
Asm.RemoveAll(Need);
boolNeed(Datamd)
{
if(md.ma%3==0)
returntrue;
else
returnfalse;
}


Asm.RemoveAll(System.Predicate<T>)传入其中的委托原型和System.Func<T,TR>是相同的,只是名字不同.

Asm.RemoveAll(System.Comparison<inT>)传入其中的委托原型和System.Func<TX,TY,int>是相同的,只是名字不同.这个初一看,还很难理解为什么System.Comparison<inT>看起来只是传入了一个参数,但是实际对应的委托原型却是两个参数,这个只有靠记着了,而且是通过返回的数字值的正负来判断排序方式,比较抽象.


Asm.Sort((Datamx,Datamy)=>//该方法实现的是将Asm由大到小的排序
{
if(mx.mb>my.mb)return-1;//返回-1表示mx被认定排序值小于my,所以排在前面
elseif(mx.mb<my.mb)return1;//返回1表示mx被认定排序值大于my,所以排在后面.
elsereturn0;
});



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: