- 1
if (this.textControl1 != null && !"".Equals(text))
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+141
if (this.textControl1 != null && !"".Equals(text))
String.Empty? Нет, не слышал.
!IsNullOrEmpty ващет
А String.IsNullOrEmpty проверяет на пустоту или null.
< textControl1
> text
public static readonly string Empty = "";
Правильно ли я понимаю, что при использовании "" под эту строку всегда выделяется дополнительная память, а при использовании String.Empty используется один и тот же объект, и таким образом пытаются оптимизировать потребление памяти?
http://www.dotnetperls.com/string-empty
И судя по их бенчмарку String.Empty медленее, нежели литерал "", т.к. код с ним хуже оптимизируется.
А по памяти как и в яве проблем не будет - все литералы интернируются при загрузке модуля.
P.S. Имхо ОП пытался сказать, что String.Empty.Equals(s) смотрится чуть нагляднее, нежели "".Equals(s).
Сделал неожиданное открытие, что text.Length == 0 работает быстрее всего. IsNullOrEmpty использует этот же метод, а не сравнивает с пустой строкой.
Кстати, внутри класса String используется string.Empty и никогда "", поэтому можно предположить, что при присвоении и возвращении пустой строки работать должно не медленнее.
Тест производительности по первой ссылке надуман и его можно не брать в расчёт.
P.S. То, что исходный код при text == null возвращает true это, имхо, баг а не фича.
fixed
http://msdn.microsoft.com/en-us/library/ms182279.aspx
Я все-таки надеюсь, что статья старая, и под otherwise имеется в виду древний 1.1, а не все фреймворки вышедшие после второго?