C# Predicate 委托

Predicate 是像 Func和Action代表一样的委托。表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素。Predicate委托方法必须采用一个输入参数并返回布尔值 true 或 false。

Predicate委托的定义

Predicate委托在 System 所定义的命名空间,如下所示:

Predicate 签名:

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

与其他委托类型相同,Predicate 委托也可以与任何方法,匿名方法 或 lambda表达式一起使用。

static bool IsUpperCase(string str)
{
    return str.Equals(str.ToUpper());
}

static void Main(string[] args)
{
    Predicate<string> isUpper = IsUpperCase;

    bool result = isUpper("hello world!!");

    Console.WriteLine(result);
}
输出:
false

Predicate 委托 与 匿名方法

也可以将匿名方法分配给 Predicate 委托类型,如下所示。

static void Main(string[] args)
{
    Predicate<string> isUpper = delegate(string s) { return s.Equals(s.ToUpper());};
    bool result = isUpper("hello world!!");
}

Predicate 委托 与 Lambda 表达式

也可以将lambda表达式分配给 Predicate 委托类型,如下所示。

static void Main(string[] args)
{
    Predicate<string> isUpper = s => s.Equals(s.ToUpper());
    bool result = isUpper("hello world!!");
}

Predicate 委托使用说明

  • Predicate 委托 是返回bool型的泛型委托

  • Predicate<int>委托 表示传入参数为int 返回bool的委托

  • Predicate 委托 有且只有一个参数,返回值固定为bool

要记住的要点

  1. predicate 委托采用一个输入参数和布尔值返回类型。

  2. 可以将匿名方法和Lambda表达式分配给predicate委托。