Maison >développement back-end >C++ >Devriez-vous utiliser des délégués anonymes vides dans les déclarations d'événements ?

Devriez-vous utiliser des délégués anonymes vides dans les déclarations d'événements ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-29 16:10:12221parcourir

Should You Use Empty Anonymous Delegates in Event Declarations?

Délégués anonymes vides dans les déclarations d'événements : inconvénients potentiels

Dans la programmation d'événements, la pratique courante consistant à ajouter un délégué anonyme vide directement sur la déclaration d'événement , comme vu ci-dessous, simplifie le déclenchement d'événements en éliminant le besoin de vérifications nulles :

// Deliberately empty subscriber
public event EventHandler AskQuestion = delegate {};

Alors que cette technique résout un problème spécifique, il est essentiel de prendre en compte les inconvénients potentiels :

  1. Impact sur les performances : L'appel de l'abonné délégué vide pour chaque invocation d'événement peut introduire une surcharge de performances négligeable. Dans les scénarios à haute fréquence, cela pourrait s'accumuler.
  2. Surcharge de maintenance : Bien que l'intention du délégué vide puisse être claire au départ, elle peut ne pas être explicite au fil du temps. Cela pourrait entraîner des problèmes de maintenance pour les développeurs qui ne connaissent pas le modèle.

Au lieu de s'appuyer sur des délégués vides, une approche alternative consiste à exploiter une méthode d'extension qui gère les vérifications nulles et simplifie le déclenchement d'événements :

public static void Raise(this EventHandler handler, object sender, EventArgs e)
{
    if(handler != null)
    {
        handler(sender, e);
    }
}

Grâce à cette extension, le déclenchement d'événements se fait sans effort et réduit la surcharge de vérification des valeurs nulles :

// Works, even for null events.
MyButtonClick.Raise(this, EventArgs.Empty);

Cette extension basée sur La solution élimine à la fois les inconvénients de performances et de maintenance associés aux délégués anonymes vides dans les déclarations d'événements.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn