Не может использовать Строку. Пустой как значение по умолчанию для дополнительного параметра

Я читаю Эффективный C# Bill Wagner. В Объекте 14 - Минимизируют Дублирующуюся Логику Инициализации, он показывает следующий пример использования новой дополнительной функции параметров в конструкторе:

public MyClass(int initialCount = 0, string name = "")

Заметьте, что он использовал "" вместо string.Empty.
Он комментирует:

Вы отметите [в примере выше], который второй конструктор указал "" для значения по умолчанию на параметре имени, а не более обычного string.Empty. Поэтому string.Empty не постоянное время компиляции. Это - статическое свойство, определенное в строковом классе. Поскольку это не постоянная компиляция, Вы не можете использовать его для значения по умолчанию для параметра.

Если мы не можем использовать string.Empty статичный во всех ситуациях, затем разве, который не побеждает цель его? Я думал, что мы будем использовать его, чтобы быть уверенными, что у нас есть системно-независимое средство обращения к пустой строке. Мое понимание неправильно?Спасибо.

ОБНОВЛЕНИЕ
Просто развить комментарий. Согласно MSDN:

Каждый дополнительный параметр имеет значение по умолчанию как часть его определения. Если никакой аргумент не отправляется за тем параметром, значение по умолчанию используется. Значения по умолчанию должны быть константами.

Затем мы не смочь использовать System.Environment.NewLine или, или использование недавно инстанцировало объектов как значений по умолчанию. Я еще не использовал VS2010, и это неутешительно!

87
задан Hamid Pourjam 19 April 2015 в 08:20
поделиться

3 ответа

Что касается компилятора C # 2.0, в String.Empty нет смысла в любом случае, и на самом деле во многих случаях это пессимизация, поскольку компилятор может встроить некоторые ссылки на "" , но не может сделать то же самое с String.Empty .

В C # 1.1 было полезно избегать создания множества независимых объектов, содержащих пустую строку, но те времена прошли. "" работает нормально.

62
ответ дан 24 November 2019 в 07:49
поделиться

Я никогда не использую string.Empty, я не вижу в этом смысла. Возможно, это облегчит людям, которые действительно плохо знакомы с программированием, но я сомневаюсь, что это полезно даже для этого.

7
ответ дан 24 November 2019 в 07:49
поделиться

Я думаю, что идея string.Empty заключается в том, что она улучшает читаемость. Это не похоже на новую строку, где есть разница между тем, как она представлена ​​на разных платформах. Жаль, что это нельзя использовать в параметре по умолчанию. Однако при переносе между Windows и чем-то вроде Mono в Linux это не вызовет никаких проблем.

4
ответ дан 24 November 2019 в 07:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: