Ejemplo delegados

Programación Orientada a Objetos (Tower defense - kingdom rush)

Moderator: julianmartinez16

Post Reply
User avatar
xacarana
Site Admin
Posts: 1213
Joined: Fri Jan 15, 2016 6:13 pm

Ejemplo delegados

Post by xacarana » Wed Aug 31, 2016 9:23 am

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();
        }
    }
}

Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

Post Reply