CSharp
Tutorial CSharp: Eventos
CSharp eventos: manejo y ejemplos. Aprende a manejar eventos en CSharp con ejemplos prácticos y detallados.
Aprende CSharp GRATIS y certifícateLos eventos en C# son una forma de proporcionar notificaciones a los clientes de un objeto cuando ocurre alguna acción o actividad en ese objeto. Los eventos son utilizados en situaciones en las que se necesita que un objeto notifique a otros objetos cuando algo ocurre. Esto es particularmente útil en entornos de interfaz gráfica de usuario (GUI) en los que, por ejemplo, un botón puede notificar a un objeto de evento cuando se hace clic en él.
En C#, los eventos se implementan utilizando delegados. Un delegado es un tipo que define y contiene referencias a métodos con un tipo de parámetro y devolución particular. En otras palabras, es un puntero a un método. Los eventos se pueden considerar como contenedores para instancias de delegados.
Crear un Evento
Para crear un evento en C#, se necesitan varios elementos:
Delegado: Se necesita definir el delegado que se utilizará para el evento. El delegado tiene la firma del método que puede manejar el evento.
Evento: Después de definir el delegado, se puede definir el evento utilizando la palabra clave
event
seguida del delegado.Invocar el evento: Se necesita una forma de invocar el evento. Esto se hace generalmente dentro del objeto que define el evento y se puede hacer en un método que se llama cuando se quiere notificar a los objetos suscritos al evento.
Un ejemplo de código para ilustrar esto:
public delegate void CambioDeNombreDelegado(string nuevoNombre);
public class Usuario
{
public event CambioDeNombreDelegado CambioDeNombreEvento;
private string nombre;
public string Nombre
{
get
{
return nombre;
}
set
{
nombre = value;
CambioDeNombreEvento?.Invoke(nombre);
}
}
}
En este ejemplo, se define un delegado CambioDeNombreDelegado
que toma una cadena como parámetro. Luego, en la clase Usuario
, se define un evento CambioDeNombreEvento
que utiliza este delegado. Dentro del set del atributo Nombre
, se invoca el evento CambioDeNombreEvento
cada vez que se cambia el nombre del usuario. La sintaxis CambioDeNombreEvento?.Invoke(nombre);
invoca el evento si y solo si el evento no es null (es decir, si hay algún suscriptor al evento). De esta manera, si se intenta invocar un evento sin ningún suscriptor no se lanza ningún error, y no sucede nada.
Suscribirse a un Evento
Para suscribirse a un evento, es necesario definir un método que coincida con la firma del delegado utilizado para el evento, y luego agregar ese método al evento.
Aquí un ejemplo:
public class MonitorDeUsuario
{
public MonitorDeUsuario(Usuario usuario)
{
usuario.CambioDeNombreEvento += Usuario_CambioDeNombreEvento;
}
private void Usuario_CambioDeNombreEvento(string nuevoNombre)
{
Console.WriteLine($"El nombre del usuario ha cambiado a {nuevoNombre}");
}
}
En este ejemplo, la clase MonitorDeUsuario
se suscribe al evento CambioDeNombreEvento
en el constructor, proporcionando el método Usuario_CambioDeNombreEvento
que coincida con la firma del delegado CambioDeNombreDelegado
. Ahora, cada vez que se cambia el nombre del usuario, se llama al método Usuario_CambioDeNombreEvento
y se imprime un mensaje en la consola. El símbolo +=
permite añadir una nueva suscripción sin cancelar las ya existentes.
Resumen
Los eventos son una parte crucial de C#, especialmente al trabajar con aplicaciones de interfaz de usuario. Aunque este ejemplo es bastante simple, los eventos pueden ser mucho más complejos, con múltiples objetos que se suscriben a los eventos y con eventos que pasan datos más complejos a sus suscriptores. Pero los conceptos básicos permanecen igual: los eventos permiten que los objetos notifiquen a otros objetos cuando algo de interés les sucede, y los delegados proporcionan la flexibilidad para definir y manejar estos eventos de manera eficiente.
Ejercicios de esta lección Eventos
Evalúa tus conocimientos de esta lección Eventos con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Excepciones
Operadores
Control de flujo
Polimorfismo
Funciones
Arrays y listas
Variables y constantes
Diccionarios
Variables y constantes
Constructores y destructores
Clases y encapsulación
Polimorfismo
Eventos
Operadores
LINQ
Lambdas
Excepciones
Objetos
Conjuntos, colas y pilas
Tipos de datos
Tipos de datos
Tareas
Diccionarios en C#
Funciones
Funciones
Constructores y destructores
Constructores y destructores
Delegados
Herencia C Sharp
Uso de consultas LINQ
Excepciones
Lambdas
Conjuntos, colas y pilas
Introducción a C#
Diccionarios
Uso de async y await
Tipos de datos
Clases y objetos
Creación de proyecto C#
Herencia
Uso de consultas LINQ
Arrays y listas
Herencia de clases
Clases y encapsulación
Operadores
Arrays y listas
Uso de async y await
Control de flujo
OOP en C Sharp
CRUD en C# de modelo Customer sobre una lista
Objetos
Control de flujo
Tareas
Variables y constantes
Delegados
Eventos
Todas las lecciones de CSharp
Accede a todas las lecciones de CSharp y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A C#
Sintaxis
Creación De Proyecto C#
Sintaxis
Variables Y Constantes
Sintaxis
Tipos De Datos
Sintaxis
Operadores
Sintaxis
Control De Flujo
Sintaxis
Funciones
Sintaxis
Clases Y Encapsulación
Programación Orientada A Objetos
Objetos
Programación Orientada A Objetos
Constructores Y Destructores
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Excepciones
Excepciones
Arrays Y Listas
Colecciones Y Linq
Diccionarios
Colecciones Y Linq
Conjuntos, Colas Y Pilas
Colecciones Y Linq
Uso De Consultas Linq
Colecciones Y Linq
Delegados
Programación Asíncrona
Eventos
Programación Asíncrona
Lambdas
Programación Asíncrona
Uso De Async Y Await
Programación Asíncrona
Tareas
Programación Asíncrona
En esta lección
Objetivos de aprendizaje de esta lección
- Entender qué son los eventos en C# y su importancia en la comunicación entre objetos.
- Aprender a crear un evento en C#, incluyendo la definición de un delegado y la invocación del evento.
- Conocer cómo suscribirse a un evento mediante la implementación de un método que coincida con la firma del delegado y agregándolo al evento.
- Familiarizarse con el uso de eventos para notificar a los objetos suscritos cuando ocurren acciones relevantes.
- Comprender que los eventos son esenciales en escenarios como aplicaciones con GUI para manejar interacciones y actualizaciones de manera eficiente.