Информация об изменениях

Сообщение Re[11]: Шейпы убрали из C#9 от 05.05.2020 11:54

Изменено 05.05.2020 12:02 hi_octane

Re[11]: Шейпы убрали из C#9
S>Зачем с нуля? Что кодогенерацию отменили? Мы как раз в этой теме и сидим. Мы вместо явного интерфейса используем op методы, которые мы можем и явно подменить.
S>Смысла особого нет для тех же числовых типов использовать op_XXX
С арифметикой можно было бы вырулить сравнительно малой кровью. Но есть задачки посложнее. Хрен запишешь ограничение "тип T имеет статический метод Create(int, string)" или "имеет экземплярный или экстеншен метод GetAwaiter()", при том что в обсуждении развития языка всё больший упор делается на развитие возможностей extension методов (например поддержку GetEnumerator() расширений), и т.д. C++ показал как это сделать относительно красиво и читабельно.
Re[11]: Шейпы убрали из C#9
S>Зачем с нуля? Что кодогенерацию отменили? Мы как раз в этой теме и сидим. Мы вместо явного интерфейса используем op методы, которые мы можем и явно подменить.
S>Смысла особого нет для тех же числовых типов использовать op_XXX
С арифметикой можно было бы вырулить сравнительно малой кровью. Но есть задачки посложнее. Причиной появления шейпов было то что в существующих дженериках хрен запишешь ограничение "тип T имеет статический метод Create(int, string)" или "имеет экземплярный или экстеншен метод GetAwaiter()", при том что в обсуждении развития языка всё больший упор делается на развитие возможностей extension методов (например поддержку GetEnumerator() расширений), и т.д. C++ показал как это сделать относительно красиво и читабельно. Имея возможность такой записи, нужно думать — может можно шейпы вообще не вводить, и все сценарии закрываются дженериками, а значит не требуют и серьёзных изменений рантайма.