Pytania otagowane jako covariance

Kowariancja, kontrawariancja i niezmienność opisują, jak zmienia się istniejąca hierarchia dziedziczenia typu po poddaniu jej pewnej transformacji (takiej jak użycie w rodzajach). Jeśli transformacja zachowuje kolejność oryginalnej hierarchii, jest „kowariantna”. Jeśli ją odwraca, jest „kontrawariantna”. Jeśli ją złamie, jest „niezmienna”.

14
W C # dlaczego nie można przechowywać obiektu List <string> w zmiennej List <object>
Wygląda na to, że obiekt List nie może być przechowywany w zmiennej List w C #, a nawet nie może być jawnie rzutowany w ten sposób. List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = sl; powoduje, że nie można niejawnie przekonwertować typu System.Collections.Generic.List&lt;string&gt;naSystem.Collections.Generic.List&lt;object&gt; I wtedy... List&lt;string&gt; sl = new …

9
Czy C # obsługuje kowariancję typu zwracanego?
Pracuję z platformą .NET i naprawdę chcę mieć możliwość tworzenia niestandardowego typu strony, z której korzysta cała moja witryna. Problem pojawia się, gdy próbuję uzyskać dostęp do strony z kontrolki. Chcę mieć możliwość zwrócenia strony określonego typu zamiast strony domyślnej. Czy jest na to sposób? public class MyPage : Page …
84 c#  covariance 

15
C #: zastępowanie zwracanych typów
Czy istnieje sposób na zastąpienie zwracanych typów w C #? Jeśli tak, to jak, a jeśli nie, dlaczego i jaki jest zalecany sposób? Mój przypadek jest taki, że mam interfejs z abstrakcyjną klasą bazową i jej potomkami. Chciałbym to zrobić (ok niezupełnie, ale jako przykład!): public interface Animal { Poo …

1
Co sprawia, że ​​kowariant ValueTuple?
Kompiluje się to poprawnie w C # 7.3 (Framework 4.8): (string, string) s = ("a", "b"); (object, string) o = s; Wiem, że jest to cukier składniowy dla następujących składników, który również poprawnie się kompiluje: ValueTuple&lt;string, string&gt; s = new ValueTuple&lt;string, string&gt;("a", "b"); ValueTuple&lt;object, string&gt; o = s; Wygląda więc …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.