Я хочу знать сценарий реального мира, в котором мы используем Контравариантность и ковариация с программой. Я видел различные блоги, но меня все еще путают, где я могу реализовать.Использование контравариантности и ковариации в реальном мире в .net
0
A
ответ
2
Вы когда-нибудь писали foreach
? Если у вас есть, то вы использовали Covariance, так что это реальный мир. Вы можете использовать foreach
на любом типе, который реализует IEnumerable. Вот подпись для IEnumerable
:
public interface IEnumerable<out T> : IEnumerable
^^
||
// See the above out keyword
Это out
ключевого слова для ковариации поэтому она применяется только для возврата типов.
Вы когда-нибудь использовали интерфейс IComparable, то вы использовали контравариантность. Вот подпись:
public interface IComparer<in T>
^^
||
// See the above in keyword
Это in
ключевое слово для контрвариации поэтому применяется только к типам параметров членов интерфейса.
И если отсутствуют ключевые слова out
и in
, то это относится как к параметрам входного параметра, так и к возвращаемым параметрам. Это называется invariance
.