Exemplo n.º 1
0
        /// <summary>
        /// Публичный конструктор для создания объекта калькулятора у которого
        /// будет доступ к методам, в которых участвует словарь.
        /// </summary>
        public Calculator()
        {
            /*АЛЬТЕРНАТИВА: СДЕЛАТЬ ЧЕРЕЗ АНОНИМНЫЕ МЕТОДЫ ИЛИ ЛЯМБДА_ВЫРАЖЕНИЯ.*/
            MathOperation delPlus   = Plus;
            MathOperation delMinus  = Minus;
            MathOperation delMult   = Mult;
            MathOperation delDiv    = Divide;
            MathOperation delStepen = Stepen;

            // Передача делегатов в словарь.
            operations.Add("*", delMult);
            operations.Add("/", delDiv);
            operations.Add("+", delPlus);
            operations.Add("-", delMinus);
            operations.Add("^", delStepen);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            MathOperation m = new MathOperation();

            // Single cast delegate

            Console.WriteLine("**Single Cast Delegate**");
            Console.Write("\n");

            SampleDelegate dgt = m.Area_Of_Triangle;

            dgt(4, 8);

            dgt = m.Area_Of_Rectangle;
            dgt(8, 8);
            Console.Write("\n");
            // Multicast delegates

            Console.WriteLine("**MultiCast Delegate**");
            Console.Write("\n");

            // Add methods using + operator

            Console.WriteLine("Adding Method reference using + operator");

            SampleDelegate dgt1 = m.Area_Of_Triangle;

            dgt1 += m.Area_Of_Rectangle;

            dgt1(6, 6);

            Console.Write("\n");
            // Remove method  using - operator

            Console.WriteLine("Removing Method reference using - operator");

            dgt1 -= m.Area_Of_Rectangle;
            dgt1(4, 4);
            Console.Write("\n");
            Console.Write("Press any key to exit..");


            Console.ReadLine();
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            // Передача методов в делегаты.
            // Альтернативное решение - сделать через анонимные методы.

            /*MathOperation delTrue;
             * operations.Add("0", delTrue = (a, b) => a + b);
             * MathOperation delTry = (a, b) => a + b;
             * Console.WriteLine(delTry(3, 5));
             * Console.WriteLine(operations["0"](4, 8));*/
            MathOperation delPlus   = Plus;
            MathOperation delMinus  = Minus;
            MathOperation delMult   = Mult;
            MathOperation delDiv    = Divide;
            MathOperation delStepen = Stepen;

            // Передача делегатов в словарь.
            operations.Add("*", delMult);
            operations.Add("/", delDiv);
            operations.Add("+", delPlus);
            operations.Add("-", delMinus);
            operations.Add("^", delStepen);
            do
            {
                Console.WriteLine("Чекайте файлы и подождите предложение о повторе решения.");
                try
                {
                    // Если программу будут перезапускать, то удалять файлы с результатами после каждого запуска.
                    if (File.Exists(output1))
                    {
                        File.Delete(output1);
                    }
                    if (File.Exists(output2))
                    {
                        File.Delete(output2);
                    }

                    // Чтение из файлов в массивы строк.
                    string[] firstDoc  = File.ReadAllLines(input1);
                    string[] secondDoc = File.ReadAllLines(input2);

                    for (int i = 0; i < firstDoc.Length; i++)
                    {
                        try
                        {
                            // Вычиление результата выражения из первого файла.
                            double answer = Calculate(firstDoc[i]);

                            // Запись в файл.
                            File.AppendAllText(output1, answer.ToString("f3") + Environment.NewLine);
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Входная строка имела неверный формат.");
                        }
                    }
                    CheckAnswers();
                }
                // Ексепшены.
                catch (IOException ex)
                {
                    Console.WriteLine(ex.Message);
                }
                catch (UnauthorizedAccessException ex)
                {
                    Console.WriteLine(ex.Message);
                }
                catch (SecurityException ex)
                {
                    Console.WriteLine(ex.Message);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                Console.WriteLine("Нажмите Enter, чтобы повторить.");
            } while (Console.ReadKey().Key == ConsoleKey.Enter);
        }