Один из методов расширения на IEnumerable<T>
- .AsEnumerable()
. Этот метод преобразует перечислимый объект, на который он был вызван, в экземпляр IEnumerable<T>
. Однако, поскольку объект должен реализовывать IEnumerable<T>
, чтобы применить к этому методу расширения, преобразование в IEnumerable<T>
является простым вопросом приведения к IEnumerable<T>
. Мой вопрос в том, почему этот метод существует вообще?
Пример:
List<string> strings = new List<string>() { "test", "test2", "test3" };
IEnumerable<string> stringsEnum1 = strings.AsEnumerable();
IEnumerable<string> stringsEnum2 = (IEnumerable<string>)strings;
В приведенном выше примере stringsEnum1
и stringsEnum2
эквивалентны. Какова точка метода расширения?
Изменить. Как следствие, почему существует метод .AsQueryable()
, когда кастинг на IQueryable<T>
эквивалентен?