Esempio n. 1
0
        static void Test3()
        {
            Calc    calc = new Calc();
            TypFunc func = calc.Sum;

            func += new TypFunc(calc.Sub);
            func += Calc.Mult;
            // func += new TypFunc(calc.Sub)  + new TypFunc(calc.Sub);
            // func =(TypFunc) Delegate.Combine(func, new TypFunc( calc.Div));

            double a = 10, b = 20;

            Console.WriteLine(func(a, b));
            Console.WriteLine("-----------------------------");
            func += Calc.Mult;
            foreach (TypFunc item in func.GetInvocationList())
            {
                Console.WriteLine(item.Method.Name + "=" + item(a, b));
            }
            Console.WriteLine("-----------------------------");
            Console.WriteLine(func(a, b));
        }
Esempio n. 2
0
        static void Test1()
        {
            try
            {
                Console.WriteLine("Введіть вираз:  ");
                string   formula = Console.ReadLine(); //10 +  60
                string[] str     = formula.Split(" +-*/".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                double   a       = Convert.ToDouble(str[0]);
                double   b       = Convert.ToDouble(str[1]);
                Sign     sign;
                if (formula.Contains('+'))
                {
                    sign = Sign.ADD;
                }
                else if (formula.Contains('-'))
                {
                    sign = Sign.SUB;
                }
                else if (formula.Contains('*'))
                {
                    sign = Sign.MULT;
                }
                else
                {
                    sign = Sign.DIV;
                }

                Calc    calc = new Calc();
                TypFunc func = null;
                switch (sign)
                {
                case Sign.ADD:
                    func = calc.Sum;
                    break;

                case Sign.SUB:
                    func = new TypFunc(calc.Sub);
                    break;

                case Sign.MULT:
                    func = Calc.Mult;
                    break;

                case Sign.DIV:
                    func = calc.Div;
                    break;
                }

                Console.WriteLine($"{a} {sign} {b}={func?.Invoke(a, b)}");
                if (func != null)
                {
                    Console.WriteLine($"{a} {sign} {b}={func(a, b)}");
                }
                else
                {
                    Console.WriteLine("Error");
                }
            }
            catch (Exception EX)
            {
                Console.WriteLine("Error" + EX.Message);
            }
        }