C# 中List类的Find,Exists,FindAll,FindIndex ,FindLast ,FindLastIndex等方法的应用举例
以Exists为例,MSDN中是这样叙述的
确定 List<(Of <(T>)>) 是否包含与指定谓词所定义的条件相匹配的元素。
我一直都认为编写MSDN文档的人语文是好的令人发指啊!
相信很多人都深有体会,这里每个字都认识,放一起完全不知所云,看了好多例子才知道是怎么回事,不知道是我肤浅,还是技术总是要深奥。
总结一下,写了一个通俗点的例子,希望能对看到的人有用。
static void Main(string[] args)//主函数即入口函数,不知道什么意思的面壁吧! { List<decimal> list1=new List<decimal>();//此处<>内是泛型的概念,不知道 //的话找本教材看下吧,感觉就像是宏 // 替换 for(int i=0; i<100;i++) //生成链表 { list1.Add(i); } if (list1.Exists(MatchPRE))//调用方法,谓词匹配函数的调用,这是调用您自定义的函 //数MatchPRE Console.WriteLine("ok");//若list1中存在99,则输出ok else Console.WriteLine("fail");//若list1中不存在99,则输出fail Console.ReadLine(); } private static bool MatchPRE(decimal p)//条件匹配函数,list1中每个元素都会传入P中 //匹配后函数返回 { if (p == 99)//此句为匹配条件,如果匹配,返回,你可以随意更改成你想要的值 return true; else { return false; } }
关于List(T).Sort方法
1.你可一采用第一个方法,这个方法为默认方法,对于T为数时将List的成员按照从小到大排列。
2.如果不符合要求则你需要使用第二个方法,实现Comparison<(Of <(T>)>) 泛型委托。即下面的例子
3.也可是利用实现比较器接口的方法实现,即最后两种方法。
static void Main(string[] args) { Random _random = new Random();//随机对象 List<int> _iList = new List<int>();//列表对象 for (int i = 0; i < 10; i++) { _iList.Add( _random.Next(0,10)); //随机函数创建列表 } Console.WriteLine("排序前"); for (int i = 0; i < 10; i++) { Console.WriteLine(_iList[i]);//排序前输出 } _iList.Sort(CompareListBig);//执行排序 Console.WriteLine("排序后"); for (int i = 0; i < 10; i++) { Console.WriteLine(_iList[i]);//排序后输出 } Console.ReadLine(); } private static int CompareListBig(int _a,int _b)//由大到小 { int _temp = _a - _b; if (_temp < 0) return 1; if (_temp > 0) return -1; return 0; } private static int CompareListSmall(int _a, int _b)//由小到大 { int _temp = _a - _b; if (_temp> 0) return 1; if (_temp < 0) return -1; return 0; }