Delegados y eventos
Aprenda cómo los delegados y eventos permiten la comunicación entre objetos en C#
Delegados y eventos es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 5 de 6. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 6 lecciones en total.
Delegados y eventos
Delegados y eventos
¡Bienvenido a la siguiente lección! En esta lección, aprenderá sobre los delegados y los eventos en C#, su propósito y cómo permiten la programación basada en eventos. ¡Comencemos!

¿Qué es un delegado?
¿Qué es un delegado?
Un delegate es un tipo que representa una referencia a un método. Permite pasar métodos como parámetros e invocarlos dinámicamente.
Punto clave: Los delegados son esenciales para implementar eventos y funciones de devolución de llamada en C#.
Definición y uso de delegados
Definición y uso de delegados
Para definir un delegado, utilice la palabra clave delegate. Ejemplo:
using System;
class Program {
// Define a delegate
public delegate void MessageDelegate(string message);
static void DisplayMessage(string message) {
Console.WriteLine(message);
}
static void Main() {
// Create a delegate instance
MessageDelegate msg = DisplayMessage;
// Invoke the delegate
msg("Hello, Delegates!");
}
}
Delegados multicast
Delegados multicast
Un solo delegado puede apuntar a varios métodos, y todos los métodos se invocarán en orden. Ejemplo:
Consejo: Utilice delegados multicast cuando sea necesario realizar varias acciones.
using System;
class Program {
public delegate void MessageDelegate(string message);
static void ShowMessage(string message) {
Console.WriteLine("Message: " + message);
}
static void LogMessage(string message) {
Console.WriteLine("Log: " + message);
}
static void Main() {
MessageDelegate msg = ShowMessage;
msg += LogMessage; // Add another method
msg("Hello, Multicast Delegates!"); // Both methods are invoked
}
}
¿Qué es un evento?
¿Qué es un evento?
Un event es un mecanismo que permite a una clase notificar a otras clases u objetos cuando ocurre algo de interés. Los eventos se basan en delegados.
Punto clave: Los eventos permiten un acoplamiento débil entre publicadores y suscriptores en la programación basada en eventos.
Definición y uso de eventos
Definición y uso de eventos
Para definir un evento, utilice la palabra clave event junto con un tipo delegado. Ejemplo:
Punto clave: Los eventos permiten crear sistemas reactivos y basados en eventos.
using System;
class Publisher {
public delegate void NotifyDelegate(string message);
public event NotifyDelegate Notify; // Define an event
public void RaiseEvent(string message) {
Notify?.Invoke(message); // Invoke the event
}
}
class Subscriber {
public void OnNotify(string message) {
Console.WriteLine("Subscriber received: " + message);
}
}
class Program {
static void Main() {
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.Notify += sub.OnNotify; // Subscribe to the event
pub.RaiseEvent("Hello, Events!"); // Raise the event
}
}
Cancelación de la suscripción a eventos
Cancelación de la suscripción a eventos
Los suscriptores pueden cancelar su suscripción a los eventos mediante -=` operator. Example:
Consejo: Cancele siempre la suscripción a los eventos para evitar fugas de memoria.
using System;
class Publisher {
public delegate void NotifyDelegate(string message);
public event NotifyDelegate Notify;
public void RaiseEvent(string message) {
Notify?.Invoke(message);
}
}
class Subscriber {
public void OnNotify(string message) {
Console.WriteLine("Subscriber received: " + message);
}
}
class Program {
static void Main() {
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.Notify += sub.OnNotify; // Subscribe
pub.RaiseEvent("First Message");
pub.Notify -= sub.OnNotify; // Unsubscribe
pub.RaiseEvent("Second Message"); // No output, as subscriber is removed
}
}
Desafío práctico
Desafío práctico
Cree un delegado CalculationDelegate para operaciones aritméticas y un evento OnCalculate. Escriba un programa que active el evento y realice cálculos. Ejemplo:
using System;
class Calculator {
public delegate void CalculationDelegate(double result);
public event CalculationDelegate OnCalculate;
public void Add(double a, double b) {
double result = a + b;
OnCalculate?.Invoke(result);
}
}
class Program {
static void Main() {
Calculator calc = new Calculator();
// Subscribe to the event
calc.OnCalculate += result => Console.WriteLine("Result: " + result);
calc.Add(5, 3); // Outputs: Result: 8
}
}
¡Excelente trabajo!
¡Excelente trabajo!
¡Felicidades! Ha aprendido a utilizar delegados y eventos para crear programas dinámicos y basados en eventos. En la próxima lección, exploraremos el trabajo con colecciones, como listas, diccionarios y colas. ¡Sigamos programando!

Preguntas frecuentes
¿La lección «Delegados y eventos» es gratis?
Sí — el texto completo de «Delegados y eventos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 6 lecciones en total.
¿Qué aprenderé en «Delegados y eventos»?
Aprenda cómo los delegados y eventos permiten la comunicación entre objetos en C# Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 5 de 6.
¿Cuánto tiempo toma la lección «Delegados y eventos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Introducción a las interfaces
- Clases abstractas
- Miembros y métodos estáticos
- Exploración de enumeraciones y estructuras
- Delegados y eventos
- Trabajo con colecciones: listas, diccionarios y colas