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".


9
Unterstützt C # die Kovarianz vom Rückgabetyp?
Ich arbeite mit dem .NET Framework und möchte wirklich einen benutzerdefinierten Seitentyp erstellen können, den alle meine Websites verwenden. Das Problem tritt auf, wenn ich versuche, über ein Steuerelement auf die Seite zuzugreifen. Ich möchte in der Lage sein, meinen bestimmten Seitentyp anstelle der Standardseite zurückzugeben. Gibt es eine Möglichkeit, …
84 c#  covariance 

15
C #: Rückgabetypen überschreiben
Gibt es eine Möglichkeit, Rückgabetypen in C # zu überschreiben? Wenn ja wie und wenn nicht warum und was ist eine empfohlene Vorgehensweise? Mein Fall ist, dass ich eine Schnittstelle mit einer abstrakten Basisklasse und deren Nachkommen habe. Ich würde das gerne machen (ok nicht wirklich, aber als Beispiel!): public …

2
scala - Jeder vs Unterstrich in Generika
Was ist der Unterschied zwischen den folgenden generischen Definitionen in Scala: class Foo[T <: List[_]] und class Bar[T <: List[Any]] Mein Bauch sagt mir, dass sie ungefähr gleich sind, aber dass letzteres expliziter ist. Ich finde Fälle, in denen das erstere kompiliert, das letztere jedoch nicht, aber den genauen Unterschied …

1
Was macht ValueTuple kovariant?
Dies wird in C # 7.3 (Framework 4.8) korrekt kompiliert: (string, string) s = ("a", "b"); (object, string) o = s; Ich weiß, dass dies syntaktischer Zucker für Folgendes ist, der auch korrekt kompiliert wird: ValueTuple<string, string> s = new ValueTuple<string, string>("a", "b"); ValueTuple<object, string> o = s; Es scheint …

1
C # für jedes unerwartete Verhalten
Warum erlaubt der C # -Compiler das Kompilieren und löst beim Ausführen eine Laufzeitausnahme aus? class Program { static void Main(string[] args) { IEnumerable<Test> list = new List<Test>() { new Test() }; foreach(IDisposable item in list) { } } } public class Test { } Dies wird mit jeder Schnittstelle …
8 c#  covariance 
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.