powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / if(str.Length == 0) или if(str == "")
25 сообщений из 36, страница 1 из 2
if(str.Length == 0) или if(str == "")
    #37441317
Винни-Бух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в плане производительности разницы нет, то в плане "как НЕ надо писать" - как правильнее? Вычислять длину и сравнивать с нулем или явно сравнивать две строки, чтобы проверить мою строку "str"?
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441319
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IsNullOrEmpty
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441322
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Винни-Бух,

string.IsNullOrEmpty(string), string.IsNullOrWhitespace(string) не рассматривали?
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441412
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
if(str == "") -> if(str==string.Empty)
(для коллекции)
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441421
Винни-Бух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В моей задаче string'овая переменная уже создана. И нужно только выяснить ее длину. Пробельные символы есть или нет - это другой вопрос. Точнее, тут нужно всего лишь порядок действий определить: сначала убираем пробелы, потом - смотрим длину, или наоборот. Что же касается IsNullOrEmpty, то эта проверка не всегда подходит: если у вас в строке QueryString есть параметр и он имеет нулевую длину, или состоит только из пробелов - то одна бизнес-логика, а вот если параметра ВООБЩЕ нет, то никакие преобразования чего-то там в пустую строку могут быть и не нужны - ибо тут другая бизнес-логика.
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441422
Винни-Бух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Ex_Soft:
вот здесь не понял: "(для коллекции)"
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441473
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Винни-БухЕсли в плане производительности разницы нет, то в плане "как НЕ надо писать" - как правильнее? Вычислять длину и сравнивать с нулем или явно сравнивать две строки, чтобы проверить мою строку "str"?

Вычислять длину строки null или сравнивать её с пустой строкой пробовали?
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441571
Винни-Бух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Starlex:
Что-то нас не туда понесло...
Анализ на null уже пройден, имеем переменную определенного типа - string. Пробельные символы съедены.
Вопрос (чисто эстетический): как проверять строку на нулевую строку? Проверить длину (я склоняюсь к этому способу) или же написать вот так: if(str == String.Empty), ведь if(str == "") только лохи пишут...
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441588
Винни-Бух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще у вас странная фраза: "Вычислять длину строки null" - длину можно вычислить у строки, а у неопределенного значения длины быть не может. Как бы мы ни старались преобразовать его в строку - будет ошибка.
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441596
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Винни-Бухto Starlex:
Что-то нас не туда понесло...
Анализ на null уже пройден, имеем переменную определенного типа - string. Пробельные символы съедены.
Вопрос (чисто эстетический): как проверять строку на нулевую строку? Проверить длину (я склоняюсь к этому способу) или же написать вот так: if(str == String.Empty), ведь if(str == "") только лохи пишут...

те что не лохи во время анализа на null проверили и на empty )
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441618
Винни-Бух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Парамон:
В общем случае путь от объекта к строке - не очевиден. В жизни всякое бывает. Поэтому мух от котлет мы отделяем: на null проверяем, покуда держим в руках объект, а уж пробелы-длины-символы - это удел строк
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441675
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Винни-Бух,

бывает,

тогда я за String.Empty потому что вариант как "" и все волшебные стринги имеет потенциал стать " " или "' или хз,
также "" создает объект но это мелочь
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441772
Винни-Бух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу. А я - за if(str.Length == 0), потому как не надо сравнивать с другим объектом.
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37441774
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оффво людям заняться нечем...
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37442769
user404
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
из этих двух вариантов :
1. if(str.Length == 0)
2. if(str == "")

конечно третий (от Ex_Soft):
if(str==string.Empty)

ибо 2й вариант компилится в оперирование с памятью бо "" - переменная, а третий в оперирование с регистрами, бо string.Empty компилится в константу. соответственно 3й вариант короче в коде (хоть MSIL хоть ASM хоть машкод) и быстрей по времени.
опять же согласен с Парамоном насчет " ", "'", "' и иже с ними.... стринги зло )) нормальные люди вобще стринги не стравнивают - их описывают костантами и сравнивают константы (ну конечно если это не единственное сравнение весьма специфичного стринга во всем проекте, и даже в этом случае по хорошему - лучше через константы)

а еще лучше посмотреть в сторону IsNullOrWhitespace (по совету Abstraction) бо тем самым избегаем необходимости тримить пробелы + пользуемся оптимизированым кодом встроенной функции проверки.
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37442896
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user404ибо 2й вариант компилится в оперирование с памятью бо "" - переменная, а третий в оперирование с регистрами, бо string.Empty компилится в константу. соответственно 3й вариант короче в коде (хоть MSIL хоть ASM хоть машкод) и быстрей по времени.
Фантазёр
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37443384
Фотография Esofter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user404ибо 2й вариант компилится в оперирование с памятью бо "" - переменная, а третий в оперирование с регистрами, бо string.Empty компилится в константу. соответственно 3й вариант короче в коде (хоть MSIL хоть ASM хоть машкод) и быстрей по времени.

на самом деле, чтоб понять почему лучше сравнивать пустые строки с string.Empty надо знать как хранятся строки и как они сравниваются и подумать над тем, что string.Empty описана в другой сборке и на что это повлияет.
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37443477
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жесть2й вариант компилится в оперирование с памятью бо "" - переменная
Дикие мысли, разрывающие моск на части
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37443800
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Измерять длину на 0 быстрее, т.к. длина строки записывается в поле, а не пересчитывается.
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37444089
user404
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУДикие мысли, разрывающие моск на части
еще не разорвало? изложи свой вариант
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37444213
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автортогда я за String.Empty ...
авторА я - за if(str.Length == 0) ...
Паганель победил! 11279533
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37444225
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно смотреть сгенеренный ассемблер, а не msil
давай ещё раз с выводами
и заодно, раз уж там три вызова трех функций, надо проанализировать сложность этих самых функций, а то +-1 инструкция ни на что не повлияет
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37444284
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автордавай ещё раз с выводами
у тебя в руках те же инструменты, что и всех - тч. слово за тобой! ;)
автори заодно, раз уж там три вызова трех функций, надо проанализировать сложность этих самых функций, а то +-1 инструкция ни на что не повлияет
ни одного вызова функций на скрине НЕТУ! (они там и не нужны вовсе) + сложность функций прикреплена к тому же скрину (будь внимательнее)!
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37444319
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гыыы... - подстава!!!
...
Рейтинг: 0 / 0
if(str.Length == 0) или if(str == "")
    #37445244
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем str.Length победитель !

улучшаю версию на str.Equals(string.Empty), это более оптимизированно чем оператор ==, так что фторой )

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
// The == operator overload MSIL:
.method public hidebysig specialname static bool
    op_Equality(string a, string b) cil managed
{
    .maxstack 8
    L_0000: ldarg.0
    L_0001: ldarg.1
    L_0002: call bool System.String::Equals(
	string, string)
    L_0007: ret
}
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / if(str.Length == 0) или if(str == "")
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]