C# 中的 Predicate 委托

2024 年 8 月 29 日 | 4 分钟阅读

C# 中有一种内置的泛型委托类型,即 Predicate 委托。谓词委托定义在 System 命名空间下。它适用于那些具有一组标准并确定所提供的参数是否满足或不满足要求的方法。对于单个输入,此委托返回的结果可以是 true 或 false。

语法

它具有以下语法:

  • public: 此关键字表示委托可以从其包含的任何外部类或程序集访问。它还表示任何可以访问所包含命名空间或程序集的代码都可以使用该委托。
  • delegate: 此关键字表示正在声明委托类型。表示对具有特定参数列表和返回类型的方法的引用的类型称为委托。
  • bool: 它描述了委托的返回类型。在这种情况下,它是 bool,这意味着委托将提供一个布尔值(true 或 false)。
  • Predicate: 委托类型的声明由该名称指示。.NET 中的 Predicate 委托类型经常用于描述检查对象是否满足特定条件的方法。
  • <in P>: 委托的泛型类型参数 P 在此部分中指定。P 前的关键字表示 P 类型参数的逆变性质。它表示在这种情况下,您可以将派生自 P 的类型,甚至是 P 本身,作为参数传递给委托。
  • (P obj): 委托的参数列表由 (P obj) 表示。委托只需接受一个名为 obj 的类型 P 参数。在使用此委托时,将提供一个接受类型 P 参数的方法。

常见用例

C# 中 Predicate 委托的几个用例如下:

  1. 过滤: 谓词经常与 Find、FindAll、Exists 等方法一起使用,以根据特定标准过滤元素。
  2. 验证: 在处理数据之前,谓词可用于根据特定要求检查数据。
  3. 搜索: 它们对于遍历集合或数组以查找符合特定条件的元素很有用。
  4. 谓词可以作为参数传递给接受委托的方法,例如 List 方法、LINQ 扩展方法(Where、Any、All 等)等等。
  5. 它们还可以分配给委托变量并用于方法组转换。

示例 1

让我们举一个例子来说明 C# 中的 Predicate 委托

输出

The Even Elements are:
2 4 6 8 10 12 
The Odd Elements are:
1 3 5 7 9 11 
The Multiples of Four are:
4 8 12

说明

总而言之,这段代码演示了 C# 中 Predicate 委托的多功能性。它支持命名方法、匿名方法和 lambda 表达式来设置过滤条件。谓词委托增强了代码的可重用性和可读性,使得使用自定义条件从集合中过滤元素变得更加容易。

示例 2

让我们再举一个例子来说明 C# 中的 Predicate 委托

输出

True

结论

总之,该程序展示了如何使用委托和方法组转换来确定给定字符串是否为大写。此示例演示了具有相应签名的方法如何由委托表示,从而实现灵活和适应性强的方法调用。