Ejemplo n.º 1
0
        public delegate double CalcDeleg(List <double> list); // we could use Func

        public static double CalculateAverage(this List <double> values, CalcDeleg calcDeleg)
        {
            if (values == null)
            {
                throw new ArgumentNullException(nameof(values));
            }

            if (calcDeleg == null)
            {
                throw new ArgumentNullException(nameof(values));
            }

            return(calcDeleg(values));
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            CalcDeleg sqr = delegate(int x)
            {
                return(x * x);
            };

            Console.WriteLine("sqr(10) = " + sqr(10));

            CalcDeleg cube = delegate(int x)
            {
                return(sqr(x) * x);
            };

            Console.WriteLine("Cube(5) = " + cube(5));
            int       number = 100;
            CalcDeleg test   = delegate(int x)
            {
                return(number + x);
            };

            Console.WriteLine("Test(5) = " + test(5));      // ?  105
            number++;                                       // 101
            CalcDeleg deleg = delegate { return(number); }; // якщо параметр не використовується - то можна упустити

            Console.WriteLine(deleg(-7878));

            CalcAverageDeleg avg = delegate(int[] a)
            {
                double avgTemp = a.Average();
                return(avgTemp);
            };

            Console.WriteLine("Average = " + avg(1, 2, 3, 4, 5));

            Transformer t = (ref int a) => a--;

            Console.WriteLine("transformer -- " + t(ref number) + "  --> " + number);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            CalcDeleg sqr = delegate(int x) { return(x * x); }; // анонімний метод

            Console.WriteLine("sqr(11) : {0}", sqr(11));

            CalcDeleg cube = delegate(int x) { return(sqr(x) * x); };

            Console.WriteLine("cube(5) : {0}", cube(5));

            int       number = 10;
            CalcDeleg summ   = delegate(int x) { return(number + x); }; //захоплення змінної number

            ++number;                                                   // number = 11
            Console.WriteLine("\navg(5) : {0}", summ(5));               // 11  + 5

            CalcDeleg r = delegate { return(number); };                 // якщо параметр неважливий(не використовується) - можна опустити

            Console.WriteLine(r(12345));                                // 11



            CalcAverageDeleg s = delegate(int[] a)
            {
                double avg = 0;
                for (int i = 0; i < a.Length; ++i)
                {
                    avg += a[i];
                }
                return(avg / a.Length);
            };

            Console.WriteLine("Average(2, 2, 5, 4) : {0}", s(2, 3, 5, 4));


            Transformer t = (ref int a) => -- a;   // записали лямбду у екземпляр делегата

            Console.WriteLine("{0} {1}", t(ref number), number);
        }
Ejemplo n.º 4
0
        static void CalcResult(string str, double arg1, double arg2, CalcDeleg DelParametr)
        {
            double result = DelParametr(arg1, arg2);

            Console.WriteLine(str + result.ToString());
        }