fork download
  1. using System;
  2.  
  3. namespace Articulos.cap04
  4. {
  5. internal sealed class EvolucionMetodosAnonimos
  6. {
  7. delegate int DelegadoCuadrado(int numero);
  8.  
  9. static int Cuadrado(int numero)
  10. {
  11. return numero * numero;
  12. }
  13.  
  14. static void Main()
  15. {
  16. // C# 1.0: Uso de delegados
  17. Console.WriteLine ("\n === C# 1.0: Uso de delegados === ");
  18. DelegadoCuadrado dc1 = new DelegadoCuadrado(Cuadrado);
  19. Console.WriteLine ("\t{0}", dc1(5).ToString());
  20.  
  21. // C# 2.0: Delegado con código de inicialización (métodos anónimos):
  22. // uso de la palabra clave `delegate` con los tipos
  23. // explítitos de los parámetros:
  24. Console.WriteLine (" === C# 2.0: Delegado con código de inicialización (métodos anónimos) === ");
  25. DelegadoCuadrado dc2 = delegate(int numero)
  26. {
  27. return numero * numero;
  28. };
  29. Console.WriteLine ("\t{0}", dc2(7).ToString());
  30.  
  31. // C# 3.0: Delegado con expresión lambda:
  32. Console.WriteLine ("\n === C# 3.0: Delegado con expresión lambda ===");
  33. DelegadoCuadrado cd3 = x => x * x;
  34. Console.WriteLine ("\t{0}", cd3(11).ToString());
  35.  
  36. // C# 3.0: Delegado genérico integrado y expresión lambda:
  37. // El delegado genérico Func<T, TResulta>:
  38. Console.WriteLine ("\n === C# 3.0: Delegado genérico integrado y expresión lambda ===");
  39. System.Func<int, int> cd4 = x => x * x;
  40. Console.WriteLine ("\t{0}\n", cd4(13).ToString());
  41. }
  42. }
  43. }
Success #stdin #stdout 0.03s 33880KB
stdin
Standard input is empty
stdout
 === C# 1.0: Uso de delegados === 
	25
 === C# 2.0: Delegado con código de inicialización (métodos anónimos) === 
	49

 === C# 3.0: Delegado con expresión lambda ===
	121

 === C# 3.0: Delegado genérico integrado y expresión lambda ===
	169