Понимание ковариантности и контравариантности в C# 4.0

Все, где Вы используете повторение, сделано более естественное с рекурсией если оно где не для практического ограничения порождения переполнения стека;-)

, Но серьезно Рекурсия и Повторение являются очень взаимозаменяемыми, можно переписать весь алгоритм с помощью рекурсии для использования повторения и наоборот. Математики как рекурсия и программисты как повторение. Это, вероятно, также, почему Вы видите все эти изобретенные примеры, которые Вы упоминаете. Я думаю, что метод математического доказательства под названием Математическая индукция имеет что-то, чтобы сделать почему математики как рекурсия. http://en.wikipedia.org/wiki/Mathematical_induction

17
задан Joan Venge 12 November 2009 в 19:52
поделиться

4 ответа

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

http://hestia.typepad.com/flatlander/2008/12/c-covariance-and-contravariance-by-example. html

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

8
ответ дан 30 November 2019 в 13:45
поделиться

Следующая статья посвящена ко- и контравариантности с делегатами: http://msdn.microsoft.com/en-us/library/ms173174.aspx .

] Возможно, это будет полезно для вас, даже если вы еще не являетесь делегатом. Я обнаружил, что это довольно легко понять.

1
ответ дан 30 November 2019 в 13:45
поделиться

Эрик Липперт дал очень хорошее объяснение в недавнем сообщении в блоге

3
ответ дан 30 November 2019 в 13:45
поделиться
Другие вопросы по тегам:

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