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