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

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

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

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