Здравствуйте, hardcase, Вы писали:
S>>Скорее всего с рослином проще дать генерик-функции, чем объяснять, почему нет.
H>Под капотом поддержку генериков делать придется хотя бы потому, что такие параметры наследуются от метода, в который вложена локальная функция.
Там не так всё будет.
Для самого замыкания всё уже сделано.
А вот local generic-функция просто переедет в класс замыкания,
void A<T>(T x)
{
T2 DoSmth<T2>() { return SomeCode<T2>(x)};
DoSmth<int>();
}
// =>
class Closure<T>
{
public T _x
public T2 DoSmth<T2>() { return SomeCode<T2>(_x)};
}
// ...
void A<T>(T x)
{
var xyz = new Closure<T> { _x = x };
xyz.DoSmth<int>();
}
И вот объяснить, почему при переезде "генерики низзя" будет куда сложнее, чем собственно перенести.
Это ж надо задокументировать в стандарте, добавить диагностики/ошибки компилятора, добавить quick fix в студию, покрыть всё это дело тестами, написать на всё перечисленное документацию, пару статей и несколько глав в книжке по MS cert exam и тд и тп.
Лучше чем-то полезным заняться