Вопросы с тегом «covariance»

Ковариантность, контравариантность и инвариантность описывают, как существующая иерархия наследования типов изменяется при некотором преобразовании (например, использовании в дженериках). Если преобразование сохраняет порядок исходной иерархии, оно является «ковариантным». Если он переворачивает его, это «контравариантно». Если он его нарушает, он «инвариантен».

2
Понимание ковариантных и контравариантных интерфейсов в C #
Я встречал их в учебнике по C #, который я читаю, но мне трудно их понять, вероятно, из-за отсутствия контекста. Есть ли хорошее краткое объяснение того, что они из себя представляют и для чего они полезны? Отредактируйте для пояснения: Ковариантный интерфейс: interface IBibble<out T> . . Контравариантный интерфейс: interface IBibble<in …

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 …

1
Что делает ValueTuple ковариантным?
Это правильно компилируется в C # 7.3 (Framework 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.