В VBA будет ли какая-либо разница, если я сравню строку или подобное с vbNullString вместо пустой строки; ""? Если да, то какие различия между ними?
Есть ли разница между vbNullString и ""?
Ответ 1
vbNullString и "" отличаются. Ниже приведен пример веб-страницы, описывающий различия в использовании памяти.
"Это обычный способ очистки строковой переменной.
Text$ = ""
Какая трата! Прежде всего, строка "" занимает 6 байт ОЗУ каждый раз, когда вы ее используете. Рассмотрим альтернативу:
Text$ = vbNullString
Так что это? vbNullString - специальная константа VB, которая обозначает пустую строку. Литерал "" представляет собой пустую строку. Там важная разница. Пустая строка - настоящая строка. Нулевая строка - нет. Это всего лишь ноль. Если вы знаете язык C, vbNullString является эквивалентом NULL.
Для большинства целей vbNullString эквивалентен "" в VB. Единственное практическое отличие заключается в том, что vbNullString быстрее назначает и обрабатывает и занимает меньше памяти.
Если вы вызываете какой-либо API или компонент, отличный от VB, протестируйте вызовы с помощью vbNullString до распространения вашего приложения. Функция, которую вы вызываете, может не проверять строку NULL, и в этом случае она может упасть. Функции Non-VB должны проверять значение NULL перед обработкой строкового параметра. С неудачей, конкретная функция, которую вы вызываете, не делает этого. В этом случае используйте "". Обычно API поддерживают vbNullString, и они могут даже лучше работать с ним! "
В остальной части статьи есть дополнительная информация об оптимизации строк, которые также могут быть проницательными.
Полная веб-страница: http://www.aivosto.com/vbtips/stringopt.html
Ответ 2
В этом сравнении указано, что для назначения переменной "" переменной используется 6 байт памяти, тогда как использование vbNullString не будет использовать какую-либо память.
Лично я предпочитаю оценивать длину строки. Если длина равна 0, то мы также приходим к выводу, что строка равна vbNullString или "". Этот метод считается самым быстрым методом проверки на vbNullString.
If Len(string) = 0 Then
Здесь вы можете прочитать сравнение Len vs vbNullString vs "" здесь.