Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素。 Predicate<T> 通常用于集合的筛选或搜索操作,比如在 List<T> 的 Find 或 Exists 方法中使用。
Predicate 常见用法
在列表中查找元素:
可以使用 Predicate<T> 在集合中查找符合特定条件的元素。
using System;
using System.Collections.Generic;
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// 使用 Predicate 查找第一个偶数
Predicate<int> isEven = num => num % 2 == 0;
// 查找第一个偶数
int evenNumber = numbers.Find(isEven);
Console.WriteLine("第一个偶数是: " + evenNumber);
输出结果:第一个偶数是: 2
检查列表中是否存在某个元素:
Predicate<T> 可以用来检查集合中是否有元素满足特定的条件。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// 使用 Predicate 判断是否有大于 5 的数字
Predicate<int> isGreaterThanFive = num => num > 5;
// 检查是否存在符合条件的数字
bool exists = numbers.Exists(isGreaterThanFive);
Console.WriteLine("是否有大于 5 的数字? " + exists);
输出结果:是否有大于 5 的数字? True
与 List<T>.RemoveAll 一起使用:
Predicate<T> 可以用来从集合中删除满足某个条件的元素。
using System;
using System.Collections.Generic;
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// 使用 Predicate 删除所有偶数
Predicate<int> isEven = num => num % 2 == 0;
// 删除所有偶数
numbers.RemoveAll(isEven);
Console.WriteLine("删除偶数后的剩余数字:");
foreach (var num in numbers)
{
Console.WriteLine(num);
}
输出结果:
删除偶数后的剩余数字:
1
3
5
7
9
使用 Lambda 表达式和 Predicate:
可以通过 lambda 表达式来简洁地定义一个 Predicate<T>,如上面示例中的 num => num % 2 == 0。