Maison >développement back-end >C++ >Câblage du gestionnaire d'événements en C# : inférence de délégué ou utilisation explicite d'un délégué ?

Câblage du gestionnaire d'événements en C# : inférence de délégué ou utilisation explicite d'un délégué ?

DDD
DDDoriginal
2025-01-08 07:17:45910parcourir

Connexion des gestionnaires d'événements C# : inférence de délégué et utilisation explicite des délégués

Les événements en C# permettent un couplage lâche entre les objets et fournissent un mécanisme de gestion des événements externes. Un scénario courant implique de s'abonner dynamiquement aux événements d'un objet externe, pour lequel vous rencontrerez la variation de syntaxe suivante :

<code class="language-c#">[object].[event] += anEvent;</code>

ou

<code class="language-c#">[object].[event] += new EventHandler(anEvent);</code>

Les deux méthodes se ressemblent, mais une compréhension plus approfondie révèle leurs différences subtiles.

Dans la première variante, le compilateur effectue une inférence de délégué pour déterminer automatiquement le type de délégué approprié en fonction de la signature de fonction fournie. Cette syntaxe simplifiée minimise la redondance du code.

Dans la deuxième variante, vous spécifiez explicitement le délégué new à l'aide du mot-clé EventHandler. Cette approche était la seule option pour les projets C# 1.0, mais dans C# 2.0 et versions ultérieures, l’inférence de délégué devient l’approche privilégiée.

Quand utiliser l'inférence de délégué

Pour les projets C# 2.0 et supérieurs, l'inférence de délégué est recommandée. Il est concis et améliore la lisibilité du code.

Exemple :

<code class="language-c#">private void Button1_Click(object sender, EventArgs e) {
    // 事件处理逻辑
}

private void Form1_Load(object sender, EventArgs e) {
    Button1.Click += Button1_Click;
}</code>

Dans cet exemple, l'inférence de délégué détermine automatiquement le délégué Button1 correct pour l'événement de clic EventHandler.

Utilisation explicite des délégués

Bien que l'inférence de délégué soit courante, lorsqu'il s'agit de code existant ou d'optimisation de performances, il peut parfois être nécessaire de spécifier explicitement les délégués. Cependant, l’utilisation explicite des délégués ajoute souvent une verbosité inutile et ne doit être utilisée que lorsque cela est nécessaire.

EventHandler Wiring in C#: Delegate Inference vs. Explicit Delegate Usage?

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