Eventos y Delegados#

Logo C#

Delegados y eventos que corresponden al lenguaje C#

Delegados#

  • Funcionamiento básico de un delegado:

 1using System;
 2
 3namespace Tipos
 4{
 5    class Program
 6    {
 7        // declaración de un delegado:
 8        public delegate int RealizarOperacion(int num1, int num2);
 9
10        // método suma:
11        public static int Suma(int a, int b)
12        {
13            return a + b;
14        }
15
16        // metodo resta:
17        public static int Resta(int a, int b)
18        {
19            return a - b;
20        }
21
22        static void Main(string[] args)
23        {
24            // crear instancia de un delegado y apuntar al metodo suma:
25            RealizarOperacion suma = Suma;
26            RealizarOperacion resta = Resta;
27
28            // pasarle los valores e imprimir:
29            Console.WriteLine(suma(5,18));
30            Console.WriteLine(resta(10, 3));
31
32            Console.Read();
33        }
34    }
35}

Métodos anónimos#

Las funciones anónimas se han añadido en este lugar ya que dependen de los delegados para ser creadas:

 1using System;
 2
 3namespace Tipos
 4{
 5    class Program
 6    {
 7        // se crea un delegado para la función anónima:
 8        public delegate string RealizarSaludo(string nombre);
 9
10        static void Main(string[] args)
11        {
12            // definimos la función anónima con el uso del delegate:
13            RealizarSaludo saludar = delegate (string nombre)
14            {
15                return "Hola, me llamo " + nombre;
16            };
17
18            // uso de la función anónima:
19            Console.WriteLine(saludar("Guillermo"));
20            Console.Read();
21        }
22    }
23}

Expresiones Lambda#

 1using System;
 2using System.Collections.Generic;
 3
 4namespace Tipos
 5{
 6    class Program
 7    {
 8        static void Main(string[] args)
 9        {
10            // creamos una lista sencilla:
11            List<int> listadoBase = new List<int> { 2, 4, 3, 6, 4, 3, 2, 1, 5, 3 };
12
13            // se puede filtrar la lista usando expresiones lambda:
14            List<int> listaPares = listadoBase.FindAll(i => i % 2 == 0);
15
16            foreach(int listado in listaPares)
17            {
18                Console.WriteLine(listado);
19            }
20            Console.Read();
21        }
22
23    }
24}

Eventos#

PROXIMAMENTE…