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