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