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

Delegate Predicate in C#

Predicate è come Func e Action rappresentano, è un delegate che rappresenta un metodo che definisce un insieme di condizioni e determina se un oggetto specifico soddisfa queste condizioni. Questo delegate è utilizzato da vari metodi delle classi Array e List per cercare elementi in una raccolta. Il metodo del delegate Predicate deve accettare un parametro di input e restituire un valore booleano true o false.

Definizione del delegate Predicate

Il delegate Predicate è definito nel namespace System come segue:

Sintassi del Predicate:

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

Come altri tipi di delegati, il delegate Predicate può essere utilizzato con qualsiasi metodo, metodo anonimo o espressione 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);
}
Output:
false

Predicate e metodi anonimi

Anche i metodi anonimi possono essere assegnati al tipo Predicate come segue.

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

Predicate e espressioni lambda

Le espressioni lambda possono anche essere assegnate al tipo Predicate come segue.

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

Istruzioni per l'uso del delegato Predicate

  • Il delegato Predicate è un delegato generico che restituisce bool

  • Il delegato Predicate<int> indica che il parametro è int e il valore di ritorno è bool

  • Il delegato Predicate ha un solo parametro e il valore di ritorno è sempre bool

Punti da ricordare

  1. Il delegato predicate accetta un parametro di input e un tipo di ritorno booleano.

  2. Si può assegnare un metodo anonimo e un'espressione Lambda a un delegato predicate.