Example #1
0
                static void Main(string[] args)
                {
                    Circle1 per = new Circle1(new length());

                    per.Start();
                    Operation operation1 = per.P;
                    double    result     = Convert.ToInt32(operation1(CGraphicsObject.x));

                    Console.WriteLine("Длина окужности:");
                    Console.WriteLine(result);
                    Ellipse1 per1 = new Ellipse1(new area());

                    per1.Start();
                    Operation2 operation2 = per1.P1;
                    double     result2    = operation2(CGraphicsObject.a, CGraphicsObject.b);

                    Console.WriteLine("Площядь элипса:");
                    Console.WriteLine(result2);
                    Console.Read();
                    ArrayList numbersList = new ArrayList()
                    {
                        CGraphicsObject.x, CGraphicsObject.a, CGraphicsObject.b
                    };
                    object obj = 10;

                    numbersList.Add(obj);
                    numbersList.RemoveAt(3);
                    Console.WriteLine("Коллекция  радиуса и длин большого и малого элипса: ");
                    foreach (object o in numbersList)
                    {
                        Console.Write(o + " ");
                    }
                }
Example #2
0
        static void Main(string[] args)
        {
            //Operation op = Double;
            Operation op = delegate(int num)
            {
                Console.WriteLine("{0} x 2 = {1}", num, num * 2);
                Console.WriteLine("{0} x 3 = {1}", num, num * 3);
                Console.WriteLine("{0} x 4 = {1}", num, num * 4);
                Console.WriteLine("{0} x 5 = {1}", num, num * 5);
            };

            op(2);
            //=======================================
            Operation1 op1 = delegate(int num)
            {
                return(num * 2);
            };

            int value = op1(2);

            Console.WriteLine(value);
            //=======================================

            Operation2 op2 = num =>   //(int num)=>
            {
                Console.WriteLine("{0} x 2 = {1}", num, num * 2);
            };

            op2(2);
            //=======================================

            Operation2 op3 = num => Console.WriteLine("{0} x 2 = {1}", num, num * 2);

            op3(2);
            //=======================================
            Action <int> op4 = num => Console.WriteLine("{0} x 2 = {1}", num, num * 2);

            op4(5);
            //=======================================

            Func <int, int> op5 = num => { return(num * 5); };
            Func <int, int> op6 = num => num * 6;

            Console.WriteLine(op5(2));
            Console.WriteLine(op6(2));
        }
Example #3
0
                static void Main(string[] args)
                {
                    Octa per = new Octa(new Perim());

                    per.Start();
                    Operation operation1 = per.P;
                    int       result     = Convert.ToInt32(operation1(CGraphicsObject.x1, CGraphicsObject.x2,
                                                                      CGraphicsObject.x3, CGraphicsObject.x4, CGraphicsObject.x5, CGraphicsObject.x6,
                                                                      CGraphicsObject.x7, CGraphicsObject.x8));

                    Console.WriteLine("Result (perimeter of the triangle):");
                    Console.WriteLine(result);
                    Circletr per1 = new Circletr(new Perim1());

                    per1.Start();
                    Operation2 operation2 = per1.P1;
                    int        result2    = operation2(CGraphicsObject.r);

                    Console.WriteLine("Result (perimeter of the rectangle):");
                    Console.WriteLine(result2);
                    Console.Read();
                    ArrayList numbersList = new ArrayList()
                    {
                        CGraphicsObject.x1, CGraphicsObject.x2,
                        CGraphicsObject.x3, CGraphicsObject.x4, CGraphicsObject.x5, CGraphicsObject.x6,
                        CGraphicsObject.x7, CGraphicsObject.x8, CGraphicsObject.r,
                    };
                    object obj = 10;

                    numbersList.Add(obj);
                    numbersList.RemoveAt(10);
                    Console.WriteLine("Collection of octagon sides and radius: ");
                    foreach (object o in numbersList)
                    {
                        Console.Write(o + " ");
                    }
                }
Example #4
0
        public static R ExecuteOperation <R, T>(string subor, bool save, bool close, string ulozAko, Operation2 <R, Workbook, T> worker, T param)
        {
            Workbook workbook = Startup(subor);

            try { return(worker(workbook, param)); }
            finally { Cleanup(workbook, save, close, ulozAko); }
        }
Example #5
0
        static void Main()
        {
            /* Пример 1 */
            Console.WriteLine("Пример 1: ");

            Message message;                // Создаём переменную делегата

            if (DateTime.Now.Hour < 12)
            {
                message = GoodMorning;      // Присваиваем этой переменной адрес метода
            }
            else
            {
                message = GoodEvening;
            }
            message();                      // Вызываем метод

            /* Пример 2 */
            Console.WriteLine("Пример 2: ");

            Operation operation = Add;             // Указание на метода ADD
            int       result    = operation(4, 5); // Add 4 5

            Console.WriteLine(result);
            operation = Multiply;           // Указание на метод Multiply
            result    = operation(4, 5);    // Multiply 4 5
            Console.WriteLine(result);

            /* Пример 3 */
            Console.WriteLine("Пример 3: ");

            Math       math       = new Math();
            Operation2 operation2 = math.Sum;   // указание делегата на другой класс, где он не обьявлен
            int        result2    = operation2(4, 5);

            Console.WriteLine(result2);

            /* Пример 4 */
            Console.WriteLine("Пример 4: ");

            message  = Hello;               // Указываем на метод hello
            message += HowAreYou;           // добавляем к нему метод howareyou
            message();                      // Hello How Are you? в 2 строчки т.к вызываеются оба метода
            message += Hello;
            message += Hello;
            message();                      // 3 раза вызывается Hello и один раз HowAreYou
            message -= HowAreYou;
            message();                      // 3 раза вызывается Hello

            Message message1 = Hello;
            Message message2 = HowAreYou;
            Message message3 = message1 + message2; // Объединение делегатов значит, что в список вызова делегата mes3 попадут все методы из делегатов mes1 и mes2.

            message3();

            /* Пример 5 */
            Console.WriteLine("Пример 5: ");

            Message message4 = Hello;

            message4.Invoke(); // Другой способ вызова делегатов
            Operation operation3 = Add;
            int       result3    = operation3.Invoke(3, 4);

            Console.WriteLine(result3);
            Message message5 = null;

            message5?.Invoke(); // При вызове делегата лучше проверять не равен ли он null не то исключение

            /* Пример 6
             * Анонимный метод */
            Console.WriteLine("Пример 6: ");

            MessageHandler handler = delegate(string mes)  // Создание анонимного метода delegate ключевое слово
            {
                Console.WriteLine(mes);
            };

            handler("Hello World");

            ShowMessage("Hello", delegate(string mes)    // Другой пример анононимных методов - передача в качестве аргумента для параметра
            {
                Console.WriteLine(mes);
            });

            /* Если анонимный метод использует параметры, то они должны соответствовать параметрам делегата.
             *  Если для анонимного метода не требуется параметров, то скобки с параметрами можно опустить
             * даже если делегет принимает несколько параметров исключение in out*/

            MessageHandler handler1 = delegate
            {
                Console.WriteLine("Анонимный метод");
            };

            handler1("Hello world");
            /* Так же как и обычное методы, анонимные могут возвращать результат */
            Operation operation1 = delegate(int x, int y)
            {
                return(x + y);
            };
            int d = operation1(4, 5);

            Console.WriteLine(d);
            /* При этом анонимный метод имеет доступ ко всем переменным, определенным во внешнем коде*/
            int       z          = 8;
            Operation operation4 = delegate(int x, int y)
            {
                return(x + y + z);
            };
            int j = operation4(4, 5);

            Console.WriteLine(j);   // 17

            /* Упражнение 1 */

            Console.WriteLine("Упражение 1: ");
            Account accout = new Account(200);

            Account.AccountStateHandler colorDelegate = new Account.AccountStateHandler(Color_Message);

            /* Добавляем в делегат ссылку на методы */

            accout.RegisterHandler(new Account.AccountStateHandler(Show_Message));
            accout.RegisterHandler(colorDelegate);

            /* 2 раза снимаем деньги */

            accout.withdraw(100);
            accout.withdraw(150);

            /* Удаляем делегат */

            accout.UnregisterHandler(colorDelegate);
            accout.withdraw(50);
        }