Predicate<T> 委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。
下面的代码示例使用带有 Array.Find<T> 方法的 Predicate<T> 委托搜索 Point 结构的数组。如果 X 和 Y 字段的产品大于 100,000,则该代理所代表的方法 ProductGT10 将返回 true。 Find<T> 方法调用数组的每个元素的代理,从而在第一个满足测试条件的点停止。
using System; using System.Drawing; public class Example { public static void Main() { // Create an array of five Point structures. Point[] points = { new Point(100, 200), new Point(150, 250), new Point(250, 375), new Point(275, 395), new Point(295, 450) }; // To find the first Point structure for which X times Y // is greater than 100000, pass the array and a delegate // that represents the ProductGT10 method to the static // Find method of the Array class. Point first = Array.Find(points, ProductGT10); // Note that you do not need to create the delegate // explicitly, or to specify the type parameter of the // generic method, because the C# compiler has enough // context to determine that information for you. // Display the first structure found. Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y); } // This method implements the test condition for the Find // method. private static bool ProductGT10(Point p) { if (p.X * p.Y > 100000) { return true; } else { return false; } } } /* This code example produces the following output: Found: X = 275, Y = 395 */来自: MSDN