С № 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 также повлияло?
  • Мы ограничены официально пустым конструктором или можем передавать параметры?

ПРИМЕЧАНИЕ: ответы должны включать официальную документацию какого-либо рода.

0 ответов

Другие вопросы по тегам