Page 1 of 1

Ejemplo delegados

Posted: Wed Aug 31, 2016 9:23 am
by xacarana
Recuerde, al usar delegados tener en cuenta
  1. Todas las funciones que se le asignen al delegado, debe cumplir la firma del delegado
  2. Es posible asignar varias veces la misma función al delegado
  3. Si hay un retorno, solo queda el último retorno asignado, desde donde se esta llamando al delegado
  4. El delegado, se debe invocar, pasandole los atributos, que dependen del número de parámetros especificados en el delegado

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        delegate void Prueba(int x, float f, bool b);
        delegate int[] Prueba2(float f, bool b, int i);

        public static void funcion1(int entero, float flotante, bool boleano)
        {
            Console.WriteLine("Test1");
        }

        public static void funcion2(int x, float f, bool b)
        {
            Console.WriteLine("Test2");
        }

        public static void funcion3(int x, float f, bool b)
        {
            Console.WriteLine("Test3");
        }

        public static int[] funcion4(float f, bool b, int i)
        {
            int[] temp = new int[3];
            temp[0] = 4;
            temp[1] = 2;
            temp[2] = 3;
            Console.WriteLine("Llamando a la función 4");
            return temp;
        }

        public static int[] funcion5(float f, bool b, int i)
        {
            int[] temp = { 5, 7, 8 };
            Console.WriteLine("Llamando a la función 5");
            return temp;
        }

        static void Main(string[] args)
        {
            Prueba p = funcion1;
            Prueba2 p2 = funcion5;
            int[] ans;

            p += funcion2;
            p += funcion3;

            p(5, 6F, true);

            p2 += funcion4;
            p2 += funcion4;
            ans = p2(4F, false, 6);

            for (int i = 0; i < ans.Length; i++)
            {
                Console.WriteLine(ans[i]);
            }

            Console.ReadKey();
        }
    }
}