static void Main(string[] args)
        {
            // instanciamos el delegado ya que como sabemos es un objeto
            var deEnteroAString = new DeEnteroAString(FuncionRetornaString);
            // instanciamos tambine la que lo retorna pero sumandole uno
            var deEnteroAStringMasUno = new DeEnteroAString(FuncionRetornaStringMas1);

            // mostramos el resultado y obviamente le pasamos los parametros como si fuera al metodo en si
            Console.WriteLine("Mostrando delegados para cambiar a string");
            Console.WriteLine(deEnteroAString(10));
            Console.WriteLine(deEnteroAStringMasUno(10));

            // ahora probamos con delegados de mas de un parametro
            var masDeUnParam = new ReturnTheCombine(MasDeUnParam);

            Console.WriteLine("Mostrando delegados con mas de un parametro");
            Console.WriteLine(masDeUnParam("Fulano", "De tal"));

            Console.WriteLine("Usamos el template para pasar un delegado y un valor");
            // puedes pasarle el delgado que solo lo convierte a string
            Template(deEnteroAString, 40);
            // o puedes pasarle el delegado que suma uno
            Template(deEnteroAStringMasUno, 40);// ya que el delegado en si muestra el valor no necesitamos imprimirlo
            // no puedes enviarle el delegado que pide mas de un parametro ya que te dara error de signature
            // Template(masDeUnParam("Hola", "Que tal"));
        }
Example #2
0
        static void Main(string[] args)
        {
            DeEnteroAString deEnteroAString = new DeEnteroAString(FuncionRetornaStringMas1);

            Console.WriteLine(deEnteroAString(10));

            Template(deEnteroAString, 10);

            //Otro delegado
            Func <int, string> delegadoFunc = FuncionRetornaString;

            Console.WriteLine("Delegado Func:" + delegadoFunc(10));

            //La diferencia entre func y action es que FUNC exije que se devuelva algo, mientras que action NO.
            Action <string> delegadoAction = Ejemplo;

            delegadoAction("José");

            Console.Read();
        }
 public static void Template(DeEnteroAString algoritmo, int valor)
 {
     Console.WriteLine("Hacer antes del algoritmo");
     Console.WriteLine(algoritmo(valor));
     Console.WriteLine("Hacer despues del algoritmo");
 }