Le manque d'inférence de type de constructeur en C# : une analyse approfondie
Le système d'inférence de type robuste de C#, une aubaine pour les méthodes génériques, omet notamment l'inférence de type de constructeur. Cet article explore les raisons de cette omission.
Obstacles conceptuels
Bien qu'apparemment simple, la mise en œuvre de l'inférence de type constructeur présente d'importantes complexités de résolution de surcharge. L'instruction new Foo(bar)
peut rencontrer plusieurs types Foo
avec des paramètres génériques variables dans la portée actuelle. La détermination du constructeur le plus approprié nécessite une révision majeure du mécanisme d'inférence de type. Le maintien de la compatibilité descendante complique encore les choses, nécessitant la priorisation des constructeurs de types non génériques.
Compromis pratiques
Malgré les avantages évidents, la mise en œuvre de l'inférence de type constructeur entraîne des coûts de développement substantiels. Les développeurs C# doivent évaluer soigneusement les avantages potentiels par rapport aux autres priorités de fonctionnalités. De plus, le modèle d'usine facilement disponible offre une alternative viable, réduisant le besoin perçu pour cette fonctionnalité spécifique.
Contexte historique
Malgré des propositions répétées, l'inférence de type constructeur est toujours restée une priorité moindre. Les défis de conception complexes associés à l'existence de solutions de contournement efficaces ont empêché son inclusion à ce jour.
Mise à jour du statut
Bien qu'elle ait été prise en compte pour C# 6, l'inférence de type constructeur a finalement été exclue de la spécification finale.
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!