日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

        歡迎訪問 生活随笔!

        生活随笔

        當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

        编程问答

        ListT.Find用法学习

        發布時間:2025/3/15 编程问答 57 豆豆
        生活随笔 收集整理的這篇文章主要介紹了 ListT.Find用法学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

        泛型集合List<T>中的Find函數用于查找集合中符合指定條件的元素..相比foreach遍歷元素,用Find函數查找,代碼更簡潔.

        函數原型如下:

        public T Find(Predicate<T> match);

        其中Predicate為C#定義好的委托,原型如下:

        public delegate bool Predicate<in T>(T obj);

        所以,List.Find函數的參數,就是一個 返回值為bool,入參為T類型的函數.當然,可以是命名函數也可以是匿名函數或Lambda表達式..

        示例如下:

        //定義一個Person類

        class Person

        ??? {
        ??????? public string Name { get; set; } ??????? public int Age { get; set; } ??????? public string Gender { get; set; }
        ??? } class Program
        ??? {
        ??????? //定義一個Predicate類型的委托變量
        ??????? private static Predicate<Person> pre = new Predicate<Person>(MyPredicate); ??????? private static bool MyPredicate(Person p)
        ??????? {
        ??????????? bool result = false;
        ??????????? if (p.Name == "張三")
        ??????????????? result = true;
        ??????????? return result;
        ??????? }
        ??????? static void Main(string[] args)
        ??????? {
        ??????????? try
        ??????????? {
        ? ? ? ? ? ? ? ???List<Person> lstPerson = new List<Person>()
        ??????????????? {
        ??????????????? new Person { Name = "張三", Age = 10, Gender = "M" },
        ??????????????? new Person { Name = "李四", Age = 11, Gender = "M" },
        ??????????????? new Person { Name = "王五", Age = 12, Gender = "M" },
        ??????????????? new Person { Name = "趙六", Age = 13, Gender = "M" },
        ??????????????? new Person { Name = "張三", Age = 33, Gender = "F" }
        ??????????????? };

        ??????????????? Person p1 = lstPerson.Find(pre);//1、命名函數
        ??????????????? Person p2 = lstPerson.Find(delegate (Person s) { return s.Name.Equals("王五"); });//2、匿名函數
        ??????????????? Person p3 = lstPerson.Find(s => { return s.Name.Equals("趙六"); });//3、Lambda表達式 Person p4 = lstPerson.Find(s => s.Name.Equals("趙六"));//4、Lambda表達式的簡潔寫法
        ??????????????? Console.WriteLine($"姓名:{p1.Name},年齡:{p1.Age}性別:{p1.Gender}");
        ??????????????? Console.WriteLine($"姓名:{p2.Name},年齡:{p2.Age}性別:{p2.Gender}");
        ??????????????? Console.WriteLine($"姓名:{p3.Name},年齡:{p3.Age}性別:{p3.Gender}");
        ??????????? }
        ??????????? catch (Exception ea)
        ??????????? {
        ??????????????? Console.WriteLine($"異常:{ea.Message}");
        ??????????? }
        ??????????? Console.ReadKey();
        ??????? }
        ??? } 運行結果如下:

        PS:List<T>.Find 返回的是符合條件的一個元素.若沒有,則返回T類型的默認值

        ??????? List<T>.FindLast? 返回符合條件最后一個元素.若沒有,則返回T類型的默認值

        ? ? ? ? List<T>.FindAll 返回符合條件的元素集合,即List<T>的子集.

        ? ? ? ? List<T>.FindIndex 返回符合條件的第一個元素的下標.下標從0開始.. 若沒有,則返回-1

        ? ? ? ? List<T>.FindLastIndex 返回符合條件的最后一個元素的下標.下標從0開始.. 若沒有,則返回-1

        ?

        ?

        ?

        轉載于:https://www.cnblogs.com/lylongs/p/9650465.html

        總結

        以上是生活随笔為你收集整理的ListT.Find用法学习的全部內容,希望文章能夠幫你解決所遇到的問題。

        如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。