Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素。 Predicate<T>
通常用于集合的筛选或搜索操作,比如在 List<T>
的 Find
或 Exists
方法中使用。
常见用法
在列表中查找元素:
可以使用 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
。
总结
- •
Predicate<T>
是一个委托类型,它接受一个类型为 T
的参数并返回一个布尔值。 - • 它常用于对集合进行筛选、查找或者验证元素是否满足特定条件。
- •
List<T>
类中有如 Find
、Exists
和 RemoveAll
等方法可以接受 Predicate<T>
,用于对集合进行操作。
阅读原文:原文链接
该文章在 2025/4/8 8:39:17 编辑过