una tonificar tonificado semana que pasa para ocurren nuestro mujeres mujer marcar hombre hacer hacemos fisica ejercicios ejercicio despues definido cuerpo cuando como cambios actividad c# events delegates

c# - tonificar - ¿Es una buena práctica definir un cuerpo de delegado vacío para un evento?



que cambios ocurren en nuestro cuerpo cuando hacemos actividad fisica (3)

Ciertamente lo he encontrado útil, sí. Habrá un costo de rendimiento minúsculo, minúsculo, pero el beneficio de la legibilidad para no tener que realizar la prueba de nulidad hace que valga la pena la OMI.

Vale la pena señalar que esta es una de las pocas ocasiones en las que es bueno usar un método anónimo en lugar de una expresión lambda; de lo contrario, debe nombrar los parámetros que va a ignorar, como este:

public event EventHandler<LoadEventArgs> LoadedData = (sender, args) => {};

No me gusta tener que nombrar cosas que no pretendo usar :)

Posible duplicado:
¿Hay algún inconveniente en agregar un delegado vacío anónimo en la declaración del evento?

¿Es una buena práctica definir un cuerpo de delegado vacío para un evento para que no tenga que preocuparse de crear un evento que no tenga controlador de eventos? (No es necesario verificar si el evento es nulo).

Me gusta el código a continuación:

public event EventHandler<LoadEventArgs> LoadedData = delegate { };


Normalmente no uso C # pero me parece una buena práctica. Esta es una aplicación de libro de texto del patrón '' Objeto nulo ''. Como se señaló, esto tendrá un costo en términos de rendimiento cuando el delegado vacío se ejecute realmente, pero gana en términos de rendimiento cada dos veces, cuando no tiene que verificar un nulo explícito, por lo que también debe ser un rendimiento de ganancia neta. sabio siempre que la frecuencia de delegados vacíos es baja.


Yo no haría esto.

Hay dos razones para esto. En primer lugar, es estándar simplemente verificar que el controlador no null ningún null antes de llamar a esto. Esto se ve en todas partes, en ejemplos, en la fuente de referencia de Microsoft y en los manuales .

Segundo, al inicializar sus eventos de esta manera, se asignan objetos innecesarios al crear su clase. Esto pondrá presión de memoria adicional en su aplicación sin una necesidad real. Esto es porque:

public event EventHandler<LoadEventArgs> LoadedData = delegate { };

se traduce a

public event EventHandler<LoadEventArgs> LoadedData = new EventHandler<LoadEventArgs>delegate { });

Si aún no lo hace, envolver sus eventos en métodos específicos ayuda mucho:

public event EventHandler MyEvent; protected virtual void OnMyEvent(EventArgs e) { if (MyEvent != null) MyEvent(this, e); }

Puedes hacer seguro este hilo (r) usando lo siguiente:

public event EventHandler MyEvent; protected virtual void OnMyEvent(EventArgs e) { var handler = MyEvent; if (handler != null) handler(this, e); }