Здравствуйте, Serginio1, Вы писали:
S> Так параметрический полиморфизм хорошь в том, что он инлайнится.
S> Я привожу тебе примеры где Дженерики прекрасно инлайнятся. Но при этом получаем проверку типа и интеллисенсе.
Вы все еще об этом примере?
return arr.Where(x => x > q).Select(x => x + 3).Sum();
Если да, то в нем предикат и проекция записаны изначально в виде, не относящемся к параметрическому полиморфизму. "x > q" и "x + 3" здесь используют ad-hoc полиморфизм. Это один момент. Второй — инлайнятся Func-и, но не операторы. Вот если бы изначально было записано
x => SomeGenericComparer.Compare(x, q) > 0
подозреваая что метод Compare<T> дженериковый; компилятор выводит T, и после оптимизации мы увидели бы "x > q", то да!