Я хотел спросить, в чем идея того, что System.String не содержит конструктор без параметров.
Из-за этого вы не можете использовать этот тип при наличии ограничения new ().
UPDATE
Почему вы думаете, что новая строка () бесполезна и, например, new int () не бесполезен. Я действительно не вижу разницы. Я действительно хотел бы иметь возможность использовать ограничение new () для строки, так как я ожидаю String.Empty.
UPDATE2
Я знаю, что int является типом значения, и все типы значений имеют конструктор по умолчанию без параметров.
Я имел в виду ответ @John Saunders (и аналогичные ответы), в котором говорилось, что выражение new String () в принципе не приносит никакой пользы. Так что, если new String () не означает ничего полезного, что такого полезного в new int ()? Я также понимаю, что для типов значений важно иметь конструкторы по умолчанию без параметров. Более того, я думаю, что для строки было бы неплохо иметь конструктор по умолчанию без параметров. Отсутствие конструктора без параметров означает для меня, что объект просто не может существовать без параметра, который его инициализирует. По моему мнению, строка не нуждается ни в каком параметре, потому что она может быть пустой Я задал этот вопрос, потому что хотел узнать, есть ли какая-то важная причина, по которой строка не имеет конструктора без параметров, или это просто дизайн или что-то еще.
Update3
Полагаю, это будет последнее обновление, так как оно больше похоже на пост в блоге, чем на вопрос. В Java строки также являются неизменяемыми, а новый String () является совершенно законным. Однако документация для конструктора без параметров гласит:
Инициализирует вновь созданную строку
объект, так что он представляет собой пустой
последовательность символов Обратите внимание, что использование
этот конструктор не нужен, так как
Строки неизменны.
ОБНОВЛЕНИЕ4
Хорошо, последнее обновление;) Я должен согласиться с Джоном Сондерсом. Я использовал код с ограничением new (), и он хорошо работал для пользовательских классов. Затем моему коллеге нужно изменить код для целых, и все было в порядке. Затем измените его на строку, и у нас возникла проблема. Когда я думаю об этом, я думаю, что код, который мы используем, необходимо изменить, чтобы отразить, что нам нужны скалярные типы, а не классы, которые имеют конструктор без параметров. Несмотря на это, я все еще думаю, что немного противоречиво, что вы можете написать новую int () и вы не можете написать новую строку () (да, я понимаю, что int является типом значения;)). Спасибо за все ваши ответы!
Заранее спасибо за помощь.