C# 中List類的Find,Exists,FindAll,FindIndex ,FindLast ,FindLastIndex等方法的應用舉例


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

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM