Из оригинального вопроса:
Я подумал, что мы будем использовать его, чтобы быть уверенным, что у нас есть независимые от системы средства обращения к пустой строке.
Каким образом пустая строка может варьироваться от системы к системе? Это всегда строка без символов! Я был бы действительно напуган, если бы когда-нибудь нашел реализацию, где string.Empty == ""
вернул false :) Это не то же самое, что и Environment.NewLine
.
Из сообщения о борьбе с терроризмом:
Я хочу, чтобы String.Empty мог использоваться в качестве параметра по умолчанию в следующем выпуске C #. : D
Ну, это, конечно, не произойдет.
Хотя мне лично также хотелось бы использовать совершенно другой механизм по умолчанию, способ работы необязательных параметров был в .NET с самого начала - и это всегда означает встраивание константы в метаданные, чтобы вызывающий код мог скопировать эту константу. на сайт вызова, если не указан соответствующий аргумент.
С string.Empty
это действительно бессмысленно - использование ""
будет делать то, что вы хотите; что больно использовать строковый литерал? (Я везде использую литерал - я никогда не использую string.Empty
- но это другой аргумент.)
Вот что меня удивляет в этом вопросе - жалоба вращается вокруг чего-то, что не на самом деле вызывает реальную проблему. Это более важно в тех случаях, когда вы хотите, чтобы значение по умолчанию вычислялось во время выполнения, потому что оно может фактически отличаться Например, я мог бы представить случаи, когда вы хотите иметь возможность вызывать метод с параметром DateTime
и иметь по умолчанию значение «текущее время». На данный момент единственный смутно элегантный обходной путь, который я знаю для этого:
public void RecordTime(string message, DateTime? dateTime = null)
{
var realDateTime = dateTime ?? DateTime.UtcNow;
}
... но это не всегда уместно.
В заключение:
- Я очень сомневаюсь, что это когда-нибудь станет частью C #
- Для
string.Empty
это все равно бессмысленно
- Для других значений, которые действительно не всегда имеют одно и то же значение, на самом деле может быть болью