The key word "predicate" is a shorthand way to refer to "a delegate which refers to methods having a single arguments and returning bool". Such a method is simply giving the answer to a true-false question about the argument.
It is defined as follows:
public delegate bool Predicate(T Obj)
One place to use a predicate is as the second argument of the Find method of the Array class.
Example (from an MSDN web page):
using System; using System.Drawing; public class Example { public static void Main() { int[] OurInts = { 12, 15, 73, -2, 67, 68, -99, -98, 0 }; // Define the Predicatedelegate. Predicate P = FindOdd; int FirstOdd = Array.Find(OurInts, P); // Display the first structure found. Console.WriteLine("First odd integer found: {0}", FirstOdd); } private static bool FindOdd(int X) { return ( X % 2 != 0); } }
Instead of looking for an odd integer, we could look for a negative integer, etc.
End of example
It is not unusual to provide a predicate in an argument list using "lambda syntax". The example above could be written using:
int FirstOdd = Array.Find(OurInts, X => (X % 2 != 0));
Lambda expressions are a large separate topic.