English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Delegate Predicate em C#

Predicate é como Func e Action representam, uma delegação que define um conjunto de condições e determina se um objeto específico atende a essas condições. Este delegate é usado por vários métodos das classes Array e List, para procurar elementos em conjuntos. O método do delegate Predicate deve aceitar um parâmetro de entrada e retornar um valor booleano true ou false.

Definição do delegate Predicate

O delegate Predicate está definido no espaço de nomes System, conforme mostrado a seguir:

Assinatura do Predicate:

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

Como outros tipos de delegados, o Predicate pode ser usado com qualquer método, método anônimo ou expressão 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);
}
Saída:
false

Predicate com método anônimo

Também pode atribuir um método anônimo ao tipo Predicate, conforme mostrado a seguir.

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

Predicate com expressão lambda

Também pode atribuir uma expressão lambda ao tipo Predicate, conforme mostrado a seguir.

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

Instrução de uso do delegado Predicate

  • O delegado Predicate é um delegado genérico que retorna um valor booleano

  • O delegado Predicate<int> representa um delegado que aceita um parâmetro int e retorna um valor booleano

  • O delegado Predicate tem apenas um parâmetro e retorna um valor booleano fixo

Ponto a lembrar

  1. O delegado predicate aceita um parâmetro de entrada e retorna um valor booleano.

  2. Pode-se atribuir métodos anônimos e expressões lambda ao delegado predicate.