Predicate 学习
class Point { double x, y; public Point(double x, double y) { this.x = x; this.y = y; } public double X { get { return this.x; } } public double Y { get { return this.y; } } } class Program { static void Main(string[] args) { // 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. //public static T Find<T>(T[] array, Predicate<T> match); Point first = Array.Find(points, CheckMax); // Predicate<T> productMax = CheckMax; // 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); Console.ReadLine(); } // 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; } } private static bool CheckMax(Point p) { return p.X > 200 && p.Y > 200; } }