Maison > développement back-end > C++ > Pourquoi la résolution de surcharge du groupe de méthodes échoue-t-elle avec des erreurs d'appel ambiguës en C# ?

Pourquoi la résolution de surcharge du groupe de méthodes échoue-t-elle avec des erreurs d'appel ambiguës en C# ?

Linda Hamilton
Libérer: 2025-01-13 08:07:42
original
355 Les gens l'ont consulté

Why Does Method Group Overload Resolution Fail with Ambiguous Invocation Errors in C#?

Ambiguïté de la résolution de surcharge du groupe de méthodes C#

Le problème :

L'utilisation de la syntaxe de groupe de méthodes avec des méthodes déléguées surchargées en C# peut déclencher une erreur du compilateur « Invocation ambiguë », même si les méthodes anonymes appellent avec succès les mêmes surcharges.

Pourquoi cela arrive :

Le compilateur C# ne dispose pas d'une "meilleure" règle définitive lors de la conversion d'un groupe de méthodes en plusieurs types de délégués compatibles lors de la résolution de surcharge. Par exemple, si classWithSimpleMethods.GetString pouvait être converti à la fois en Func<string> et Action, le compilateur ne peut pas choisir entre eux, ce qui entraîne une ambiguïté.

Résolution (diffusion de type explicite) :

La solution consiste à convertir explicitement le groupe de méthodes en type de délégué souhaité :

<code class="language-csharp">classWithDelegateMethods.Method((Func<string>)classWithSimpleMethods.GetString);</code>
Copier après la connexion

Amélioration C# 7.3 :

Résolution de surcharge améliorée en C# 7.3 pour les groupes de méthodes. Dans de nombreux cas (comme dans l'exemple fourni), classWithDelegateMethods.Method(classWithSimpleMethods.GetString) et les appels similaires se compilent désormais sans casting explicite. Cependant, une ambiguïté peut encore surgir dans des scénarios complexes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal