Ответ 1

Это не так.

http://msdn.microsoft.com/en-us/library/system.string.empty.aspx:

Значение этого поля представляет собой строку нулевой длины, "".

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

Ответ 2

Согласно Brad Abrams:

Как предполагает Дэвид, разница между String.Empty и "довольно маленький, но есть разница." " фактически создает объект, он будет вероятно, вытащить из строки интервал, но все же... пока String.Empty не создает объект... так что если вы действительно ищете в конечном счете в эффективности памяти, я предлагаю String.Empty. Однако вы должны имейте в виду, что разница trival вам понравится никогда не видеть его в ваш код...

Что касается System.String.Empty или string.Empty или String.Empty... моя забота уровень низкий, -)

Обновление (6/3/2015):

В комментариях упоминалось, что приведенная выше цитата из 2003 больше не верна (я предполагаю, что это относится к утверждению, что "" фактически создает объект). Поэтому я создал пару простых консольных программ на С# 5 (VS 2013):

class Program
{
    static void Main()
    {
        // Outputs "True"
        Debug.WriteLine(string.IsInterned(string.Empty) != null);
    }
}

class Program
{
    static void Main()
    {
        // Outputs "True"
        Debug.WriteLine(string.IsInterned("") != null);
    }
}

Это демонстрирует, что оба "" и String.Empty интернированы, когда ваш код начинает работать, что означает, что для всех практических целей они одинаковы.

Самая важная часть комментария Брэда такова:

вы должны иметь в виду, что разница настолько велика, что вы будете как никогда не видеть его в вашем коде...

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

Ответ 3

В большинстве случаев String.Empty is identical to "", как правило, я нахожу его более удобным в использовании String.IsNullOrEmpty(str) вместо сравнения str == "" || str == null. Также, если вы используете .NET 4.0 String.IsNullOrWhiteSpace(str), он охватывает еще больше случаев и, безусловно, лучше всего.

Ответ 4

Нет никакой разницы. Некоторые предпочитают использовать String.Empty для удобства чтения кода. Используйте тот, с которым вам удобно пользоваться.

Ответ 5

Я слышал некоторые слухи о том, что String.Empty постоянно является одним и тем же объектом, а "" - это новый объект при каждом возникновении, но я точно не знаю, правильно ли он.

Основная причина для String.Empty - читаемость.