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

я читаюЭффективный C # Билл Вагнер. ВЭлемент 14 - Минимизируйте повторяющуюся логику инициализацииОн показывает следующий пример использования новой функции необязательных параметров в конструкторе:

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

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

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

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

ОБНОВИТЬ
Просто последующий комментарий. По данным MSDN:

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

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