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