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用法学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyQt5菜单添加+事件+状态栏-7
- 下一篇: C++实现二叉树的相应操作