Возможный дубликат:
В чем разница между String.Empty и ""
Как String.Empty
отличается от ""
?
Возможный дубликат:
В чем разница между String.Empty и ""
Как String.Empty
отличается от ""
?
Это не так.
http://msdn.microsoft.com/en-us/library/system.string.empty.aspx:
Значение этого поля представляет собой строку нулевой длины, "".
В коде приложения это поле чаще всего используется в назначениях для инициализации строковой переменной в пустую строку. Чтобы проверить, является ли значение строки String.Empty, используйте метод IsNullOrEmpty.
Согласно 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 не является решением, основанным на производительности. Не тратьте много времени на размышления об этом. Выберите в зависимости от того, что вы найдете более читаемым или каким-либо конвентом уже используется в вашем проекте.
В большинстве случаев String.Empty is identical to ""
, как правило, я нахожу его более удобным в использовании String.IsNullOrEmpty(str)
вместо сравнения str == "" || str == null
. Также, если вы используете .NET 4.0 String.IsNullOrWhiteSpace(str)
, он охватывает еще больше случаев и, безусловно, лучше всего.
Нет никакой разницы. Некоторые предпочитают использовать String.Empty
для удобства чтения кода. Используйте тот, с которым вам удобно пользоваться.
Я слышал некоторые слухи о том, что String.Empty постоянно является одним и тем же объектом, а "" - это новый объект при каждом возникновении, но я точно не знаю, правильно ли он.
Основная причина для String.Empty - читаемость.