Questions marquées «covariance»

La covariance, la contravariance et l'invariance décrivent comment la hiérarchie d'héritage de type existante change lorsqu'elle est soumise à une certaine transformation (comme l'utilisation dans les génériques). Si la transformation conserve l'ordre de la hiérarchie d'origine, elle est "covariante". S'il l'inverse, il est «contravariant». S'il le casse, il est "invariant".





4
Pourquoi la covariance et la contravariance ne prennent pas en charge le type valeur
IEnumerable<T>est co-variant mais il ne prend pas en charge le type valeur, seulement le type référence. Le code simple ci-dessous est compilé avec succès: IEnumerable<string> strList = new List<string>(); IEnumerable<object> objList = strList; Mais changer de stringà intentraînera une erreur de compilation: IEnumerable<int> intList = new List<int>(); IEnumerable<object> objList = …



7
La conversion de tableau co-variant de x à y peut provoquer une exception d'exécution
J'ai une private readonlyliste de LinkLabels ( IList<LinkLabel>). J'ajoute plus tard des LinkLabels à cette liste et ajoute ces étiquettes à un FlowLayoutPanelcomme suit: foreach(var s in strings) { _list.Add(new LinkLabel{Text=s}); } flPanel.Controls.AddRange(_list.ToArray()); ReSharper me montre un avertissement: de Co-variant array conversion from LinkLabel[] to Control[] can cause run-time exception …






3
Pourquoi l'ensemble immuable de Scala n'est-il pas covariant dans son type?
EDIT : réécrit cette question en fonction de la réponse originale La scala.collection.immutable.Setclasse n'est pas covariante dans son paramètre de type. Pourquoi est-ce? import scala.collection.immutable._ def foo(s: Set[CharSequence]): Unit = { println(s) } def bar(): Unit = { val s: Set[String] = Set("Hello", "World"); foo(s); //DOES NOT COMPILE, regardless of …

14
En C #, pourquoi un objet List <string> ne peut-il pas être stocké dans une variable List <object>
Il semble qu'un objet List ne peut pas être stocké dans une variable List en C #, et ne peut même pas être explicitement converti de cette façon. List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = sl; résultats dans Impossible de convertir implicitement le type System.Collections.Generic.List&lt;string&gt;enSystem.Collections.Generic.List&lt;object&gt; Puis... List&lt;string&gt; sl …

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.