Als «covariance» getaggte Fragen

Kovarianz, Kontravarianz und Invarianz beschreiben, wie sich die vorhandene Typvererbungshierarchie ändert, wenn sie einer Transformation unterzogen wird (z. B. Verwendung innerhalb von Generika). Wenn die Transformation die Reihenfolge der ursprünglichen Hierarchie beibehält, ist sie "kovariant". Wenn es es umkehrt, ist es "kontravariant". Wenn es bricht, ist es "invariant".

5
<out T> vs <T> in Generika
Was ist der Unterschied zwischen &lt;out T&gt;und &lt;T&gt;? Beispielsweise: public interface IExample&lt;out T&gt; { ... } vs. public interface IExample&lt;T&gt; { ... }
188 c#  generics  covariance 



9
Beispiel für Kovarianz und Kontravarianz in der realen Welt
Ich habe ein wenig Probleme zu verstehen, wie ich Kovarianz und Kontravarianz in der realen Welt verwenden würde. Bisher waren die einzigen Beispiele, die ich gesehen habe, das gleiche alte Array-Beispiel. object[] objectArray = new string[] { "string 1", "string 2" }; Es wäre schön, ein Beispiel zu sehen, mit …
162 c#  c#-4.0  covariance 

4
Warum Kovarianz und Kontravarianz den Wertetyp nicht unterstützen
IEnumerable&lt;T&gt;ist eine Co-Variante, unterstützt jedoch keinen Werttyp, sondern nur einen Referenztyp. Der folgende einfache Code wurde erfolgreich kompiliert: IEnumerable&lt;string&gt; strList = new List&lt;string&gt;(); IEnumerable&lt;object&gt; objList = strList; Beim Wechsel von stringzu intwird jedoch ein kompilierter Fehler angezeigt: IEnumerable&lt;int&gt; intList = new List&lt;int&gt;(); IEnumerable&lt;object&gt; objList = intList; Der Grund wird in …



7
Die Konvertierung eines Co-Varianten-Arrays von x nach y kann zu Laufzeitausnahmen führen
Ich habe eine private readonlyListe von LinkLabels ( IList&lt;LinkLabel&gt;). Ich füge später LinkLabels zu dieser Liste hinzu und füge diese Bezeichnungen FlowLayoutPanelwie folgt hinzu: foreach(var s in strings) { _list.Add(new LinkLabel{Text=s}); } flPanel.Controls.AddRange(_list.ToArray()); Resharper zeigt mir eine Warnung : Co-variant array conversion from LinkLabel[] to Control[] can cause run-time exception …


3
Kovarianz, Invarianz und Kontravarianz im Klartext erklärt?
Heute habe ich einige Artikel über Kovarianz, Kontravarianz (und Invarianz) in Java gelesen. Ich habe den englischen und deutschen Wikipedia-Artikel sowie einige andere Blog-Beiträge und Artikel von IBM gelesen. Aber ich bin immer noch ein bisschen verwirrt darüber, worum es genau geht? Einige sagen, es geht um die Beziehung zwischen …


3
Nennen Sie Beispiele für Funktionen, die Kovarianz und Kontravarianz sowohl bei Überladung als auch bei Überschreibung in Java demonstrieren. [geschlossen]
Geschlossen . Diese Frage muss fokussierter sein . Derzeit werden keine Antworten akzeptiert. Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage so, dass sie sich nur auf ein Problem konzentriert, indem Sie diesen Beitrag bearbeiten . Geschlossen vor 5 Jahren . Verbessere diese Frage Bitte zeigen Sie ein gutes …


3
Warum ist Scalas unveränderliches Set in seiner Art nicht kovariant?
BEARBEITEN : Diese Frage wurde basierend auf der ursprünglichen Antwort neu geschrieben Die scala.collection.immutable.SetKlasse ist in ihrem Typparameter nicht kovariant. Warum ist das? 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
Warum kann in C # ein List <string> -Objekt nicht in einer List <object> -Variable gespeichert werden?
Es scheint, dass ein List-Objekt nicht in einer List-Variablen in C # gespeichert und nicht einmal explizit auf diese Weise umgewandelt werden kann. List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = sl; Ergebnisse in Can nicht implizit konvertiert Typ System.Collections.Generic.List&lt;string&gt;zuSystem.Collections.Generic.List&lt;object&gt; Und dann... List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.