Я пытаюсь понять, почему string.Empty
есть readonly
, а не const
. Я видел this Post, но я не понимаю комментария, который Microsoft написал об этом. Поскольку Джон Скит написал в комментарии "Я не знаю - это не имеет большого смысла для меня, если честно..."
Общая версия Common Language Infrastructure 2.0 Release. string.cs находится в sscli20\clr\src\bcl\system\string.cs
// The Empty constant holds the empty string value.
//We need to call the String constructor so that the compiler doesn't mark this as a literal.
//Marking this as a literal would mean that it doesn't show up as a field which we can access
//from native.
public static readonly String Empty = "";
Я не вижу здесь никакого вызова конструктора String и, кроме того, он помечен как буквальный "
Может ли кто-нибудь объяснить мне простой текст: что означает комментарий и почему string.Empty
readonly
, а не const
?
Update:
Эрик Липперт прокомментировал теперь удаленный ответ:
Я попросил одного из старожилов С# пообедать об этом, и он не вспомнил конкретно, почему это решение было принято, но предположил, что это как-то связано с интернированием.