Ejemplo n.º 1
0
        // Método de inicialização
        static void Main(string[] args)
        {
            // Atribuindo uma função lambda (função anônima) ao delegate:
            DelCalc delCalc = (x, y, operation) =>
            {
                switch (operation)
                {
                case '+':
                    return(x + y);

                case '-':
                    return(x - y);

                case '*':
                    return(x * y);

                case '/':
                    return(x / y);

                default:
                    return(x + y);
                }
            };

            /*
             * Agora, com a função anônima encapsulada na 'variável/delegate' 'delCal', podemos passar ela como parâmetro para outros métodos, e
             * a qualquer momento executála através da palavra chave 'Invoke':
             */
            var result = delCalc.Invoke(5, 2, '*');

            Console.WriteLine(result);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            DelCalc d1 = Calc.Add;                                                           //створили екзмепляр делегата, який посилається на стат.метод Calc.Add

            Console.WriteLine("d1 = Calc.Add; d1(2, 3) : {0}", d1(2, 3));                    //виклик методу через делегат
            Console.WriteLine("Method.Name : {0}\nTarget : {1}", d1.Method.Name, d1.Target); //інформація про метод(екз MethodInfo), інформація про обєкт(object)- тут null


            d1 = Calc.Sub;                                                                   //тут d1 посилається на стат.метод Calc.Add
            Console.WriteLine("\nd1 = Calc.Sub; d1(2, 3) : {0}", d1(2, 3));
            Console.WriteLine("\nd1.Invoke(20, 15); : {0}", d1.Invoke(20, 15));              //виклик методу через делегат
            Console.WriteLine("Method.Name : {0}\nTarget : {1}", d1.Method.Name, d1.Target); //Target = null, метод статичний


            Calc calc = new Calc(10);

            d1 = calc.Mult;
            Console.WriteLine("\nd1 = Calc.Mult; d1(3, 4) : {0}", d1(3, 4));
            Console.WriteLine("Method.Name : {0}\nTarget : {1}", d1.Method.Name, d1.Target);// Target = calc

            Console.WriteLine("\nd1 = Calc.Mult; d1(2, 5) : {0}", d1(21, 5));
            Console.WriteLine("Method : {0}\nTarget : {1}", d1.Method, d1.Target);


            Console.WriteLine("\ncalc : {0}", calc);

            DelCalc d2 = new DelCalc(Calc.Add); //створили екзмепляр делегата

            Console.WriteLine("\nDelCalc d2 = new DelCalc(Calc.Add);\nd2(340, 120) : {0}", d2(340, 120));
            Console.WriteLine("\nd2.Invoke(100, 111) : {0}\n", d2.Invoke(100, 111));
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            DelCalc d1 = new DelCalc(Calc.Add); // створила екземпляр делегата, який посилається

            // на статичний метод класу Calc
            Console.WriteLine("d1 = Calc.Add; d1(23,1) = {0}", d1(23, 1));
            Console.WriteLine($"Method name: {d1.Method.Name} \n Target name: {d1.Target}"); // інформація про об'єкт
                                                                                             // Target = null - бо метод статичний
            d1 = Calc.Sub;
            Console.WriteLine("d1 = Calc.Sub; d1(23,1) = {0}", d1.Invoke(23, 1));
            Console.WriteLine($"Method name: {d1.Method.Name} \n Target name: {d1.Target}"); // інформація про об'єкт

            Calc calc = new Calc(10);

            d1 = calc.Mult;
            Console.WriteLine("d1 = Calc.Mult; d1(3,4) = {0}", d1(3, 4));
            Console.WriteLine($"Method name: {d1.Method.Name} \n Target name: {d1.Target}"); // інформація про об'єкт

            DelCalc d2 = new DelCalc(Calc.Add);

            if (d2 != null)
            {
                Console.WriteLine(d2(3, 5));
            }

            Console.WriteLine(d2?.Invoke(3, 5));
        }
Ejemplo n.º 4
0
        // Método de inicialização
        static void Main(string[] args)
        {
            // Vamos atribuir o método 'Calcular' declarado acima para o Delegate 'DelCalc' criado anteriormente:
            DelCalc delCalc = Calculate;

            // Agora, com a função 'Calculate' encapsulada na 'variável/delegate' 'delCal', podemos passar ela como parâmetro para outros métodos:
            var result = ExecuteCalculate(delCalc);

            Console.WriteLine(result);
        }
        static void Main()
        {
            // Enable Unicode
            Console.OutputEncoding = Encoding.Unicode;

            // випадкові числа
            Random rnd = new Random();

            // випадкові цілі числа (великі числа погіршують читабельність)
            #region Створення цілих чисел
            double[] ab = new double[]
            {
                rnd.Next(sbyte.MinValue, sbyte.MaxValue),
                rnd.Next(sbyte.MinValue, sbyte.MaxValue)
            };

            // виведення на екран
            Console.WriteLine("\nЗгенеровані випадкові числа:\n");
            Console.WriteLine($"\tA = {ab[0]:N0}");
            Console.WriteLine($"\tB = {ab[1]:N0}\n");
            #endregion

            // створення змінної делегата
            // не бачу смисла виносити окремо виведення інформації
            // за межи лямда-виразу, вважаємо що резульатат -
            // це повернення виведення виразу в консоль
            DelCalc delCalc = (a, b) =>
                              Console.WriteLine($"\t{a} + {b} = {a + b:N0}");

            delCalc += (a, b) =>
                       Console.WriteLine($"\t{a} - {b} = {a - b:N0}");

            delCalc += (a, b) =>
                       Console.WriteLine($"\t{a} * {b} = {a * b:N0}");

            delCalc += (a, b) =>
            {
                double temp = default;

                if (a == 0 && b == 0)
                {
                    temp = double.NaN;
                }
                else if (a > 0 && b == 0)
                {
                    temp = double.PositiveInfinity;
                }
                else if (a < 0 && b == 0)
                {
                    temp = double.NegativeInfinity;
                }
                else
                {
                    temp = a / b;
                }

                Console.WriteLine($"\t{a} / {b} = {temp:N2}");
            };

            // вивід результату
            delCalc(ab[0], ab[1]);

            // повторення
            DoExitOrRepeat();
        }
Ejemplo n.º 6
0
 static decimal ExecuteCalculate(DelCalc delCalc)
 {
     // Aqui recebemos um método encapsulado em um delegate, e o executamos através da palavra chave 'Invoke', passando os argumentos necessários:
     return(delCalc.Invoke(5, 2, '*'));
 }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            double firstNumber, secondNumber;

            Console.Write("please enter the valu of x = ");
            firstNumber = Convert.ToDouble(Console.ReadLine());

            //string matOperator = Console.ReadLine();
            Console.Write("please enter the valu of y = ");
            secondNumber = Convert.ToDouble(Console.ReadLine());


            double DoDivision(double x, double y)
            {
                if (y == 0)
                {
                    Console.WriteLine("you cant divide by 0");
                    return(double.NaN);
                }
                else
                {
                    return(x / y);
                }
            }

            double DoMultiplication(double x, double y)
            {
                return(x * y);
            }

            double DoSubtraction(double x, double y)
            {
                return(x - y);
            }

            double DoAddition(double x, double y)
            {
                return(x + y);
            }

            double DoRemainder(double x, double y)
            {
                return(x % y);
            }

            double DoDegree(double x, double y)
            {
                return(Math.Pow(x, y));
            }

            DelCalc delCalc1 = new DelCalc(DoAddition);
            DelCalc delCalc2 = new DelCalc(DoSubtraction);
            DelCalc delCalc3 = new DelCalc(DoMultiplication);
            DelCalc delCalc4 = new DelCalc(DoDivision);
            DelCalc delCalc5 = new DelCalc(DoRemainder);
            DelCalc delCalc6 = new DelCalc(DoDegree);

            Console.WriteLine();
            Console.Write("x + y = ");
            Console.WriteLine(delCalc1(firstNumber, secondNumber));
            Console.Write("x - y = ");
            Console.WriteLine(delCalc2(firstNumber, secondNumber));
            Console.Write("x * y = ");
            Console.WriteLine(delCalc3(firstNumber, secondNumber));
            Console.Write("x / y = ");
            Console.WriteLine(delCalc4(firstNumber, secondNumber));
            Console.Write("x % y = ");
            Console.WriteLine(delCalc5(firstNumber, secondNumber));
            Console.Write("x ^ y = ");
            Console.WriteLine(delCalc6(firstNumber, secondNumber));

            Console.ReadKey();
        }