В более ранних версиях C # IEnumerable
был определен следующим образом:
public interface IEnumerable<T> : IEnumerable
Начиная с C # 4, определение таково:
public interface IEnumerable<out T> : IEnumerable
- Это просто для того, чтобы избавиться от раздражающих приведений в выражениях LINQ?
- Разве это не вызовет те же проблемы, что и с
string [ ] <: object []
(разбитая дисперсия массива) в C #?
- Как было выполнено добавление ковариации с точки зрения совместимости? Будет ли предыдущий код работать в более поздних версиях .NET или здесь необходима перекомпиляция? А что насчет обратного?
- Был ли предыдущий код, использующий этот интерфейс, строго инвариантным во всех случаях, или возможно, что некоторые варианты использования теперь будут вести себя иначе?
задан Mechanical snail 21 November 2012 в 07:01
поделиться