Exemple #1
0
 static void Main(string[] args)
 {
     //var circule = new Circle(1.5);
     //Console.WriteLine($"Diametr = {circule.Calculate(r => 2.0 * r)}, " +
     //    $"Perimtr = {circule.Calculate(r => 2 * Math.PI * r)}, " +
     //    $"Sq = {circule.Calculate(r => Math.PI * Math.Pow(r, 2))}");
     Class1.WriteHelloWord();
     Calculate.FigureMetod();
     Operatin.OperationMethod();
 }
Exemple #2
0
        static void Main(string[] args)
        {
            //Примеры функционала делегата - обозначены в комментариях знаком >>>

            Console.WriteLine("----------------------------------------------------------");
            //>>> Функционал делегата - указатель на другой метод

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

            if (DateTime.Now.Hour < 10)
            {
                message = textHello;
            }
            else
            {
                message = textByeBye;
            }

            //Выполнение метода из списка вызовов делегата
            message();


            Console.WriteLine("----------------------------------------------------------");
            //>>> Функционал делегата - делигирование классом выполнения некоторого кода извне

            //(Определяем дополнительную логику извне для выполнение какого-то дейтсвия внутри другого класса)
            Account myAccount = new Account(400);

            Account.AccountStateHandler colorDelegat = new Account.AccountStateHandler(colorMessage);

            //Для первого метода в списке делегат передаём объект, в котором инициализируем переменую делегата
            myAccount.registerHandler(new Account.AccountStateHandler(showMessage));

            //>>> Функционал делегата - добавление, удаление и поочередное выполнение нескольких методов в списке делегатов

            //В методе registerHandler() добавляем метод список вызовов делегата
            myAccount.registerHandler(colorDelegat);
            myAccount.withdraw(200);
            myAccount.withdraw(100);

            //В методе unregisterHandler() удаляем метод из списка вызовов делегата
            myAccount.unregisterHandler(colorDelegat);
            myAccount.withdraw(250);

            Console.WriteLine("----------------------------------------------------------");
            //>>> Функционал делегата - выполнение анонимных методов, которые позволяют создавать готовые экземрляры готов делегатов
            //(Объявление анонимного метода начинается с delegate())
            MessageWithText messageWithText = delegate(string text) {
                Console.WriteLine(text);
            };

            messageWithText("Зупуск анонимный метод!");

            Console.WriteLine("----------------------------------------------------------");
            //>>> Функционал делегата - использование с лямбда-выражениями, которые являются упрощённой запись анонимных методов

            Operatin operation = (x, y) => x * y;   //Лямбда-выражение для опеределение операции умножение двух чисел

            Console.WriteLine("Результат умножение двух чисел - {0}", operation(10, 2));

            //Интересно - если мы доабвим в список выполнения доп.метод, то результат операций выведетя только для последнего метода
            operation += (x, y) => x + y;           //Лямбда-выражение для опеределения операции сложения двух чисел
            Console.WriteLine("В списке выполенения делегата несколько методов, но результат только последнего, это сложение - {0}", operation(153, 47));

            Console.WriteLine("----------------------------------------------------------");

            Console.ReadKey();
        }