До выхода C # 4.0 я был очень взволнован ковариацией и контравариантностью.Это потворствовало моей любви к теоретической правильности!
Однако теперь, когда это вышло, и я вернулся к написанию нормального, повседневного, скучного кода, я начинаю задумываться: я когда-нибудь его уже использовал?И я замечаю, что я не использовал это сознательно.Ни один из интерфейсов или делегатов, которые я определил с тех пор, не выиграл от этого.
Существует только один единственный случай, в котором я позже обнаружил, что я невольно использовал ковариацию, но это очень тонкий и я могтак же не заметил этого.Представьте, что X
является базовым классом, а Y
является его потомком:
if (enumerableOfYs.Contains(variableOfTypeX))
Существуют ли какие-нибудь интересные или захватывающие примеры, когда любой из вас, ребята, использовал ковариацию или контравариантность в реальной жизни?, не надуманный сценарий использования, и он действительно спас день, будучи впечатляюще «правильным»?