Predicate ExampleUse the Predicate type, which is a function type that always returns a bool value to mean true or false.
This page was last reviewed on Sep 2, 2022.
Predicate. A Predicate returns true or false. This C# type stores a method that receives 1 parameter and returns 1 value of true or false.
True, False
This type is often used with lambda expression syntax. We can create a predicate by specifying a lambda expression and passing it to a method.
An example. We look at a program that uses 2 Predicate instances with the parameterized type of integer. The return value of Predicate types is always bool (true or false).
Detail The Predicate variables are assigned to lambda expressions. At this point they are valid predicates.
Then The program demonstrates how the Invoke method always returns true or false when it is called.
Detail The => syntax separates the arguments from the method bodies. The right-hand side is evaluated to a Boolean result.
Note The two lambdas return true if the argument is one, and if the argument is greater than 4.
using System; class Program { static void Main() { // // This Predicate instance returns true if the argument is one. // Predicate<int> isOne = x => x == 1; // // This Predicate returns true if the argument is greater than 4. // Predicate<int> isGreaterEqualFive = (int x) => x >= 5; // // Test the Predicate instances with various parameters. // Console.WriteLine(isOne.Invoke(1)); Console.WriteLine(isOne.Invoke(2)); Console.WriteLine(isGreaterEqualFive.Invoke(3)); Console.WriteLine(isGreaterEqualFive.Invoke(10)); } }
True False False True
List. Predicate is often used with the List generic type. You can specify a lambda expression as the argument to certain List methods. The C# compiler then uses type inference.
List Find, Exists
Here We create a string array of 3 elements. Each string in the array has at least 4 characters.
Detail We pass a lambda expression to TrueForAll, which receives a Predicate instance. The return value is a bool.
Result The Predicate returns true if the string has 3 or more chars. This is true for all items in the array, so TrueForAll returns true.
using System; using System.Collections.Generic; class Program { static void Main() { var items = new List<string> { "compiler", "interpreter", "file" }; // Use TrueForAll with a predicate. if (items.TrueForAll(item => item.Length >= 3)) { Console.WriteLine("PREDICATE TrueForAll"); } } }
Notes, lambda parsing. The right-hand side of a lambda acquires an implicit return value if this is indicated by the context. A Predicate must always have a Boolean return value.
A summary. The term "predicate" has wide applicability in computer science. In C#, predicates are specified with lambda expressions where the result value is of type bool.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Sep 2, 2022 (edit).
© 2007-2023 Sam Allen.