Я могу только предположить здесь:
string.Empty
был определен для явности - при инициализации строки это может быть непонятно из контекста, который ""
действительно явно подразумевался как инициализатор (вместо null
или, скажем, " "
или просто как заполнитель во время тестирования). Использование string.Empty
- это определенный ответ на такую головоломку.
Это также может быть возврат к C - пустая строка в C не является пустой строкой. Это массив символов, первый символ которого равен нулю (следовательно, пуст), который не совпадает с C #. Я хочу сказать, что в разных языках вы представляете пустую строку по-разному (и они могут иметь разное значение), что string.Empty
исключает такую двусмысленность.
В отличие от того, что другие говорят о множественных объектах - это не проблема, так как любой строковый литерал будет интернирован при компиляции. Это включает в себя значение string.Empty
- ""
. Каждый раз, когда любое из них повторяется в коде, объект будет извлечен из внутреннего пула. Это верно для домена приложения .