IEnumerable.Select
- это универсальный метод со следующими сигнатурами:
public static IEnumerable<TResult> Select<TSource, TResult>(
this IEnumerable<TSource> source,
Func<TSource, TResult> selector
)
public static IEnumerable<TResult> Select<TSource, TResult>(
this IEnumerable<TSource> source,
Func<TSource, int, TResult> selector
)
Переданная функция должна возвращать TResult
и Select
сам возвращает IEnumerable<TResult>
.Тип TResult
может быть выведен компилятором (как сделано в посте), или он может быть явно аннотирован.
Больше информации о дженериках - как TResult
может быть "произвольным, но частнымtype ", например - можно найти в Руководстве по программированию C # Generics .Существует ряд вопросов SO, в которых обсуждаются также ограничения вывода типа C # (включая обобщение).
Счастливое кодирование.