Запитання з тегом «covariance»

Коваріантність, противаріантність та інваріантність описують, як змінюється існуюча ієрархія спадкування, коли вона зазнає певної трансформації (наприклад, використання в генеріках). Якщо перетворення підтримує впорядкування вихідної ієрархії, воно є "коваріантним". Якщо вона перевертає її, вона є "противажною". Якщо це порушить, це "інваріант".

14
Чому в C # неможливо зберегти об'єкт List <string> у змінній List <object>
Здається, що об'єкт List не може зберігатися у змінній List у C # і навіть не може бути явно переданий таким чином. List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = sl; результати в Неможливо неявно перетворити тип System.Collections.Generic.List&lt;string&gt;наSystem.Collections.Generic.List&lt;object&gt; І потім... List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = …

9
Чи підтримує C # коваріацію поверненого типу?
Я працюю з фреймворком .NET, і я дуже хочу мати можливість створювати користувальницький тип сторінок, які використовують усі мої веб-сайти. Проблема виникає, коли я намагаюся отримати доступ до сторінки з елемента керування. Я хочу мати можливість повернути мій конкретний тип сторінки замість сторінки за замовчуванням. Чи є спосіб зробити це? …
84 c#  covariance 

15
C #: Заміщення типів повернення
Чи є спосіб замінити типи повернення в C #? Якщо так, то як, а якщо ні, чому і який рекомендований спосіб зробити це? Моя справа полягає в тому, що я маю інтерфейс з абстрактним базовим класом і нащадками цього. Я хотів би зробити це (добре не дуже, але як приклад!): …

2
scala - будь-яке проти підкреслення в дженериках
У чому полягає різниця між такими загальними визначеннями в Scala: class Foo[T &lt;: List[_]] і class Bar[T &lt;: List[Any]] Мої кишки говорять мені, що вони приблизно однакові, але останнє є більш явним. Я знаходжу випадки, коли перший компілює, а другий ні, але не можу покласти руку на точну різницю. Дякую! …

1
Що робить ValueTuple коваріантом?
Це складено правильно у C # 7.3 (Рамка 4.8): (string, string) s = ("a", "b"); (object, string) o = s; Я знаю, що це синтаксичний цукор для наступного, який також складено правильно: ValueTuple&lt;string, string&gt; s = new ValueTuple&lt;string, string&gt;("a", "b"); ValueTuple&lt;object, string&gt; o = s; Отже, виявляється, що ValueTuples можна …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.