Один из методов расширения на 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> эквивалентен?