Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Fhernd/7e24f6e8c63061b0a2a4 to your computer and use it in GitHub Desktop.
Save Fhernd/7e24f6e8c63061b0a2a4 to your computer and use it in GitHub Desktop.
Demostración de la declaración y uso de eventos en C#.
using System;
namespace Articulos.Cap04
{
public class Broadcaster
{
CambioPrecioEventHandler _cambioPrecio; // Delegado privado
public event CambioPrecioEventHandler CambioPrecio
{
add
{
_cambioPrecio += value;
}
remove
{
_cambioPrecio += value;
}
}
public event CambioPrecioEventHandler CambioPrecio;
}
internal class EjemploEvento
{
// Campo que siempre que sea modificado se
// notificará su nuevo estado a través de un evento:
private int valor;
// Delegado diseñado para el evento que 'monitorea'
// el cambio de estado del campo `valor`:
public delegate void ManipulacionCampoValorEventHandler();
// Evento que monitorea el estado del campo `valor`:
public event ManipulacionCampoValorEventHandler CambioNumero;
// Constructor que inicializa el campo `numero`:
public EjemploEvento(int numero)
{
EstablecerValor (numero);
}
protected virtual void OnValorCambio()
{
if (CambioNumero != null)
{
CambioNumero();
}
else
{
Console.WriteLine("Evento: El estado del campo `valor` ha cambiado.");
}
}
public void EstablecerValor(int numero)
{
if (valor != numero)
{
valor = numero;
OnValorCambio();
}
}
}
internal class Aplicacion
{
public static void Main()
{
// Inclusive cuando creamos una instancia de `EjemploEvento`
// se genera el evento:
EjemploEvento e = new EjemploEvento(5);
// Otras operaciones que generan un evento:
e.EstablecerValor(7);
e.EstablecerValor(11);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment