cette question légèrement différente à propos de la variance cette fois.Variance de signature de type en C#, par rapport aux remplacements
Je suppose que C# ne vous permet pas de surcharger une fonction virtuelle avec une fonction contravariante? Si c'est le cas, comment le faites-vous, puisque je continue d'obtenir "une surcharge de méthode appropriée non trouvée". Si ce n'est pas le cas, pourquoi pas? si la classe de base spécifie que la valeur dans sera toujours un int, et que la sous-classe peut prendre un objet, où est le problème?
Même pour les types de retour, doivent être covariante dans leur signature overrride
Quelles langues vous permettent de le faire? (C++/Java je vous regarde) et s'ils vous laissent utiliser, variez-vous quels types? (type de retour/liste d'arguments etc.)
Pourriez-vous avoir plusieurs remplacements? Je ne vois pas pourquoi pas tant que les signatures étaient techniquement uniques.
Why does C#/CLR not support method override co/contra-variance?
je lis et je vois pas de réponse à l'une des questions. Je connais la variance générique, et je sais que c'est génial. Je veux connaître la variance de la signature de la méthode, et pas seulement en C#, mais aussi en C# (c'est-à-dire, sans s'y limiter). Si ce n'est pas le cas je voudrais une confirmation de cela et une explication (est-ce un détail de mise en œuvre? Est ma théorie de type faux? Est-ce juste le CLR/C# arrive à ne pas soutenir cette fonctionnalité particulière? Je n'ai pas pensé à implémenter le CLR, et donc je ne connais pas de détails complexes spécifiques.)