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;
        }

    }
原文地址:https://www.cnblogs.com/xiaokang088/p/2685266.html