Почему string.Empty больше рекомендуется, чем ""? - PullRequest
3 голосов
/ 13 апреля 2011

Почему string.Empty рекомендуется больше, чем ""?

Это потому, что когда компилятор анализирует код и приходит ", компилятор будет готов прочитать строку? но в string.Empty компилятор даже не будет готов прочитать строку?

Ответы [ 4 ]

6 голосов
/ 13 апреля 2011

Есть еще одна причина.

Константы, по своей природе, являются Статики - это ссылки на отдельные экземпляры, совместно используемые всеми потоками в некоторой области приложения, в то время как литерал заканчивается всоздание N экземпляров пустой строки.

Именно поэтому рекомендуется использовать поле string.Empty constant только для чтения вместо использования пустого строкового литерала "", и, очевидно, как и другиесказал, что это улучшает читаемость.

В любом случае, интернирование строки следует принимать во внимание, потому что при некоторых условиях может случиться, что два или более литералов, содержащих одну и ту же строку, могут оказаться водин экземпляр ( см. раздел «Примечания» в String.IsInterned документах ):

Среда выполнения общего языка автоматически поддерживает таблицу, называемую внутренним пулом, в которой содержится один экземпляр каждого уникальногоконстанта литеральной строки, объявленная в программе, а также любой уникальный экземпляр String, который вы добавляете программно, вызываяСтажер.

4 голосов
/ 13 апреля 2011

Нет, это, безусловно, не правильный ответ. Вы не упоминаете язык, поэтому позвольте мне угадать кое-что здесь:

String.Empty - это константа, определенная для класса string. "" является строковым литералом для пустой строки.

Теперь, если вы делаете равенство сравнений, тогда вы хотите быть уверены, что говорите об одном и том же объекте, верно?

Гарантирует ли ваш язык, что "" и string.empty сравниваются равными? Это также может быть вопросом времени выполнения. Я думаю, что вы хотите, чтобы Google является строка интернирования . Если у вас есть это, то не имеет значения, какой вы используете. Если вы этого не сделаете, то возникнут незначительные ошибки.

РЕДАКТИРОВАТЬ: Я вижу, вы говорите о C #. У есть интернирование строк, поэтому не имеет значения, какой из них вы используете. Это просто вопрос стиля.

4 голосов
/ 13 апреля 2011

если вы используете "", его можно легко спутать с " ", поэтому для повышения читаемости String.Empty; можно использовать

0 голосов
/ 13 апреля 2011

Это в основном как постоянное значение для пустого, более удобочитаемое человеком

...