С № 8; Целевое типизированное `новое` выражение?
Я читал вики сообщества Jon Skeet номерах версий для C#
язык и заметил, что C# 8
был в настоящее время в предварительном просмотре. Я перешел по ссылке для ожидаемых функций и наткнулся на предложенную функциональность под названием Target-typed new
выражение
Приведенная там информация гласит, что функциональность находится на стадии создания прототипа, и это здорово! Однако, просматривая резюме, я заметил то, что кажется мне противоречием в его использовании.
Первый приведенный пример:
Point p = new (x, y);
Затем, когда вы продолжите через резюме, в нем четко говорится:
Разрешаем ли мы
new()
привязать кstruct
конструктор по умолчанию?
Кажется полезным дляnew() { Property = value }
, Но слегка отрицательный, так как позволитint i = new();
,
Некоторые варианты:
- разрешать
- запрещать
- запретить "примитивам"
- запретить, если нет инициализатора (но как насчет пустого инициализатора, как
new() { }
?).
Это говорит мне о том, что мы можем ограничиться использованием пустого конструктора; однако, я думаю, что ключевая фраза здесь - конструктор по умолчанию, но это заставляет меня поверить, что если единственный конструктор содержит аргументы, мы могли бы использовать его, как в первом примере.
Есть ли у кого-нибудь дополнительная официальная информация о следующем?
- Эта функциональность ориентирована исключительно на
struct
илиclass
также повлияло? - Мы ограничены официально пустым конструктором или можем передавать параметры?
ПРИМЕЧАНИЕ: ответы должны включать официальную документацию какого-либо рода.