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