Пример #1
0
        static void Test()
        {
            Console.WriteLine("Enter a?b  ?(+-*/) ");
            string expression = Console.ReadLine(); ///20+30
            char   sign       = ' ';

            try
            {
                if (expression.Contains('+'))
                {
                    sign = '+';
                }
                if (expression.Contains('-'))
                {
                    sign = '-';
                }
                if (expression.Contains('*'))
                {
                    sign = '*';
                }
                if (expression.Contains('/'))
                {
                    sign = '/';
                }

                string[] numbers = expression.Split(sign);
                double   a       = double.Parse(numbers[0]);
                double   b       = double.Parse(numbers[1]);

                Matem        matem = new Matem();
                FuncDelegate func  = null;
                double       res   = 0;
                switch (sign)
                {
                case '+': func = matem.Sum; break;

                case '-': func = new FuncDelegate(matem.Sub); break;

                case '*': func = Matem.Mult; break;

                case '/': func = Matem.Div; break;

                default:
                    throw new Exception("no sign");
                }
                //    Console.WriteLine($"{a}{sign}{b}={func?.Invoke(a,b)}");
                Console.WriteLine($"{a}{sign}{b}={func(a, b)}");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Пример #2
0
        static void Test2()
        {
            Matem        matem = new Matem();
            FuncDelegate func  = matem.Sum;

            func += matem.Sub;
            func += Matem.Mult;
            func += Matem.Div;
            double a = 10, b = 20;

            Console.WriteLine($"{a} {b}={func(a, b)}");
            Console.WriteLine($"+--------------------------------------");
            foreach (FuncDelegate f in func.GetInvocationList())
            {
                Console.WriteLine($"{a} {f.Method.Name} {b}={f(a, b)}");
            }
        }