Примеры хороших, реальных случаев использования для ковариации и контравариантности в C # 4.0?

До выхода C # 4.0 я был очень взволнован ковариацией и контравариантностью. Это потворствовало моей любви к теоретической правильности!

Однако теперь, когда это вышло, и я вернулся к написанию нормального, повседневного, скучного кода, Я начинаю задаваться вопросом: я когда-либо использовал это еще? И я замечаю, что я не использовал это сознательно. Ни один из интерфейсов или делегатов, которые я определил с тех пор, не выиграл от этого.

Существует только один единственный случай, в котором я позже обнаружил, что я невольно использовал ковариацию, но это очень тонкий и я мог бы также иметь не заметил этого. Представьте себе X является базовым классом, а Y является его потомком:

if (enumerableOfYs.Contains(variableOfTypeX))

Существуют ли какие-нибудь интересные или захватывающие примеры, когда кто-нибудь из вас, ребята, использовал ковариацию или контравариантность в реальном вариант жизни, не надуманный, и он действительно спас день, будучи удивительно «правильным»?

6
задан Timwi 27 August 2010 в 05:05
поделиться

2 ответа

Я использовал C# около трех лет, и я помню только "отсутствующие" функции дисперсии, может быть, один или два раза.

Возможно, теперь, когда они есть в языке, я найду больше возможностей воспользоваться ими, но я думаю, что в лучшем случае это «второстепенные» функции.

(Мне интересно посмотреть, какие ответы появятся здесь.)

0
ответ дан 8 December 2019 в 18:29
поделиться

Такие функции, как ковариантность и контравариантность, на самом деле не спасают положение. Скорее, при правильном использовании они облегчают последующее обслуживание. Таким образом, это очень похоже на константную корректность в C++. Это не добавляет мощности, но правильно написанный код использует ее, и это значительно упрощает работу с системой.

ПРИМЕЧАНИЕ. Я еще не использовал его, потому что только что обновился до VS 2010.

1
ответ дан 8 December 2019 в 18:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: