Delegate en C#

Los delegados son una característica fundamental en C# que permite implementar un comportamiento similar a los punteros a funciones en lenguajes de programación como C y C++.

En este artículo, exploraremos qué son los delegados, cómo funcionan y cómo puedes utilizarlos en tus aplicaciones C#.

Además, proporcionaremos ejemplos de código para ilustrar su uso en diferentes escenarios.

¿Qué es un Delegado?

Un delegado en C# es un tipo seguro de puntero a función que permite encapsular un método y pasarlo como argumento a otro método o asignarlo como valor a una variable. En otras palabras, un delegado es un objeto que puede representar un método con un conjunto específico de parámetros y un tipo de retorno.

Declaración de Delegados

Para declarar un delegado en C#, puedes utilizar la palabra clave delegate. Aquí tienes la sintaxis básica para declarar un delegado:


delegate tipoDeRetorno NombreDelegado(tipoParametro1 parametro1, tipoParametro2 parametro2, ...);

Lenguaje del código: C# (cs)

Ejemplo de Uso de Delegados

Para entender mejor cómo funcionan los delegados, veamos un ejemplo simple. Supongamos que queremos escribir un programa que calcule la suma de dos números. Podemos utilizar un delegado para encapsular el método de suma y pasar este delegado como argumento a otra función que realice alguna operación con los números. Aquí tienes el código de ejemplo:


using System;

// Declaración del delegado
delegate int OperacionMatematica(int a, int b);

public class Calculadora
{
    // Método que realiza una operación matemática utilizando un delegado
    public static void RealizarOperacion(int x, int y, OperacionMatematica operacion)
    {
        int resultado = operacion(x, y);
        Console.WriteLine("El resultado de la operación es: " + resultado);
    }
}

class Program
{
    // Método para sumar dos números
    static int Sumar(int a, int b)
    {
        return a + b;
    }

    static void Main(string[] args)
    {
        // Crear una instancia del delegado y asociarla al método Sumar
        OperacionMatematica operacion = Sumar;

        // Utilizar el delegado para realizar una suma
        Calculadora.RealizarOperacion(5, 3, operacion); // Imprimirá "El resultado de la operación es: 8"
    }
}

Lenguaje del código: C# (cs)

En este ejemplo, declaramos un delegado OperacionMatematica que puede representar cualquier método que tome dos enteros como parámetros y devuelva un entero.

Luego, creamos un método Sumar que realiza la operación de suma. Después, creamos una instancia del delegado y la asociamos al método Sumar.

Finalmente, utilizamos el método RealizarOperacion de la clase Calculadora para realizar una suma utilizando el delegado.